다음 코드에서 오류를 찾으라는 메시지가 나타납니다. 내가 지금까지 그들 중 세 가지를 발견했다 (5) 오류가 분명히있다, 여기에 코드코드 스 니펫에서 오류 찾기
#include <iostream>
class Base{
public:
Base(int data) : _data(data){}
virtual void printData(){
std::cout << "Base " << _data << std::endl;
}
private:
int _data;
};
class Derived : public Base{
public:
Derived(derivdata) : Base(derivdata){}
void printData(){
std::cout << "Derived " << _data << std::endl;
}
}
int main(){
Derived *var = new Derived(5);
var->printData();
Base* basevar = static_cast<Base>(*var);
basevar->printData();
}
- 클래스
Derived
은 세미콜론으로 끝나지 않는에게 있습니다. - 은 생성자의 인수는 입력
Base
의 데이터 멤버는 pivate 그래서 시도되고Derived
으로 액세스 될 수없는 선언되지 않는다.
Derived
저는 다른 사람들을 찾기 위해 고심하고 있습니다. 나는 주조에 대해 main()
과 관련 있다고 생각하지만 캐스팅에 대해서는 아직 많이 알지 못합니다. 나는 올바른 방향으로 어떤 도움을 주셔서 감사하겠습니다. 컴파일러는 항상 당신을 위해 구문 오류를 발견 할 것이다 - 감사
그것을 컴파일 시도해야한다. 그리고 네,'static_cast' 라인으로 문제가 발생했습니다 (또는 두 가지 방법으로 계산합니다). – Barry
많은 경고가 가능한 코드를 컴파일하여 시작하십시오. –
기본 클래스에 가상 소멸자가 없습니다. 'var'을 해제하는'delete'도 없습니다. –