2011-03-27 6 views
1

가끔 상속받을 수 있도록 고안된 클래스가 있지만 모든 함수가 항상 사용되는 것은 아닙니다. 따라서 파생 클래스를보다 읽기 쉽고 유지하기 쉽게 만들기 위해 상속 가능한 함수가 정의되었지만 순수 가상이 아닌 비어 있습니다. RakNet아무것도하지 않고 레벨 4 경고로 컴파일하는 함수

virtual void OnDirectSocketReceive(const char *data, const BitSize_t bitsUsed, SystemAddress remoteSystemAddress) {(void) data; (void) bitsUsed; (void) remoteSystemAddress;} 

의 예는 이제 대부분의 경우 함수는 몇 가지 인자를 가지고 있으며, 레벨 4 경고에,이 함수의 인수가 사용되지 않은 경고를 제공합니다. 나는 현재 위의 RakNet의 예제를 따르고 있으며 데이터를 가지고 아무 것도하지 않고있다. 그것은 경고를 제거하는 표준/공통 방법입니까? 이 디자인을 모두 피할 수 있습니까? 일반적인 생각/통찰력/제안?

답변

9

또 다른 방법은 매개 변수의 이름을 지정하지 않는 것입니다. 즉, 기능을 사용 할 의사가 없다는 것을 보여줍니다

virtual void OnDirectSocketReceive(const char* /*data*/, const BitSize_t /*bitsUsed*/, SystemAddress /*remoteSystemAddress*/) 
{ } 
+0

+1 인라인 주석의 매개 변수의 이름을 유지하고이 상황에서 좋은 생각은. –

3

당신은 인수의 이름을 필요가 없습니다 :

virtual void OnDirectSocketReceive(const char *, BitSize_t, SystemAddress) { } 
0

컴파일러 인수에 이름이없는 경우 닥쳐해야합니다

virtual void OnDirectSocketReceive(const char *, const BitSize_t, SystemAddress) 
{} 

을 (그런데 당신은 신중하게 더 많은 인수를 설명해야 할 수도 있습니다

1

경고 수준 4로 컴파일 한 후 예 (정상)입니다. 당신은 (우리가 그냥 그들을 주석)의 예에서 당신이 할 일을, 특정 경고를 무시하거나 변수 이름을 제거 할 수 있습니다 :

virtual void OnDirectSocketReceive(
     const char * /* data */, 
     const BitSize_t /* bitsUsed */, 
     SystemAddress /* remoteSystemAddress */) 
{ } 
0

가 다른 방법입니다

: 당신은 형식 매개 변수의 이름을 생략 할 수 있습니다
virtual void OnDirectSocketReceive(const char *, const BitSize_t, SystemAddress) {} 
0

나는 주석 아웃 이름을에 의해 사용되지 않는 매개 변수에 대한 경고 제거 :

virtual void OnDirectSocketReceive(const char */*data*/, const BitSize_t /*bitsUsed*/, SystemAddress /*remoteSystemAddress*/) 
{ 
} 
관련 문제