C++ 추상 클래스 (다른 클래스는 상속 및 인스턴스화해야 함)에서 이상한 오류 (';', 문자열 클래스가 인식되지 않음 등)가 발생합니다. 또한 파생 클래스가 추상 클래스 메서드를 구현하도록 강요하고 싶습니다. 따라서 순수 가상 = 0입니다.추상 클래스/함수에서 컴파일 오류가 발생했습니다.
다음은 추상 추상 클래스 정의입니다.
Drawable.h :
#ifndef __myns__managers__Drawable_h__
#define __myns__managers__Drawable_h__
#include <string>
namespace myns
{
namespace managers
{
class Drawable;
}
}
namespace myns
{
namespace managers
{
class Drawable
{
public:
virtual float getX() = 0;
virtual float getY() = 0;
virtual string getImageFilePath() = 0;
protected:
int drawableId;
};
}
}
#endif
C의 내 관련 지식 ++ 그게 바로, 모든 확인 같아요? 하지만 VS 2010에서 컴파일하면 다음과 같은 컴파일 오류가 발생합니다.
어떻게 해결할 수 있습니까? 미리 감사드립니다.
VS는 출력을 빌드 :
1>------ Build started: Project: InteractiveMembranes_vc10, Configuration: X86 Debug Win32 ------
1> OutputManager.cpp
1>(project dir)\managers\drawable.h(23): error C2146: syntax error : missing ';' before identifier 'getImageFilePath'
1>(project dir)\managers\drawable.h(23): error C2433: 'interactivemembranes::managers::Drawable::string' : 'virtual' not permitted on data declarations
1>(project dir)\managers\drawable.h(23): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>(project dir)\managers\drawable.h(23): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>(project dir)\managers\drawable.h(23): warning C4183: 'getImageFilePath': missing return type; assumed to be a member function returning 'int'
1>(project dir)\managers\drawable.h(23): error C2253: 'interactivemembranes::managers::Drawable::getImageFilePath' : pure specifier or abstract override specifier only allowed on virtual function
1> Application.cpp
1>(project dir)\managers\drawable.h(23): error C2146: syntax error : missing ';' before identifier 'getImageFilePath'
1>(project dir)\managers\drawable.h(23): error C2433: 'interactivemembranes::managers::Drawable::string' : 'virtual' not permitted on data declarations
1>(project dir)\managers\drawable.h(23): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>(project dir)\managers\drawable.h(23): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>(project dir)\managers\drawable.h(23): warning C4183: 'getImageFilePath': missing return type; assumed to be a member function returning 'int'
1>(project dir)\managers\drawable.h(23): error C2253: 'interactivemembranes::managers::Drawable::getImageFilePath' : pure specifier or abstract override specifier only allowed on virtual function
1> Generating Code...
1> Compiling...
1> TestPersistence.cpp
1> Generating Code...
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
* 이런 경우 std :: string;을 사용하면 선언 *을 사용하는 것이 더 편리합니다. –
OMG, 실화. 이런! 고맙습니다. 초보자 인 초보자 C++ 프로그래머. – pedrosanta