2014-10-05 6 views
0

EDIT!상속 할 때 예상 결과가 작동하지 않습니까?

내가 보지 못했던 어리석은 오타가이 문제를 일으켰습니다. 이제 해결되었습니다. 모두 감사합니다!

왜 내 코드가 각 개별 클래스의 출력을 출력하지 않습니까?

예상 결과는 1의 메시지이고 2의 메시지이어야합니까?

class CTest 
{ 
public: 
    virtual void WriteMessage(); 
}; 
void CTest::WriteMessage() 
{ 
} 

class CMessage1 : public CTest 
{ 
    virtual void WriteMesssage() 
    { 
     cout << "Message from 1" << endl; 
    } 
}; 


class CMessage2 : public CTest 
{ 
    virtual void WriteMesssage() 
    { 
     cout << "Message from 2" << endl; 
    } 
}; 


int _tmain(int argc, _TCHAR* argv[]) 
{ 

    CTest* pMessages[4]; 
    pMessages[0] = new CMessage1; 
    pMessages[1] = new CMessage2; 
    pMessages[2] = new CMessage1; 
    pMessages[3] = new CMessage2; 
    for (int i = 0; i < 4; i++) 
    { 
     pMessages[i]->WriteMessage(); 
    } 
    return 0; 
} 

각 CMessage 인스턴스에 대해 WriteMessage 가상 무효를 만들어야합니까? 이처럼 :

당신은 WriteMesssageWriteMessage을 맞춤법이 틀린
void CMessage2::WriteMesssage() 
{ 
cout << "Message from 2" << endl; 
} 
+0

어떤 행동을합니까? –

+0

실제로 무엇이 잘못 되었습니까? – Galik

+0

각 클래스에서 해당하는 내용을 인쇄하지 않습니다. 그것이 메인의 배열을 지날 때마다 각각의 다른 클래스들로부터 큐을 출력해야합니다. 코드가 실행되고 컴파일되지만 출력이 전혀 없습니다. – Keir

답변

2

, 따라서 그것은 기본 버전을 무시하지 않는다 (3 '의이'주의).

override 키워드 (C++ 11의)를 사용하면 의도 한 것을 재정의하지 않을 때 도움이 될 수 있습니다.

+1

물론 이것은 "단순한 오타"로 투표 마감해야합니다. –

관련 문제