私はファーストクラスを取得しました:
namespace Abstract{
class AbstractClass{
public:
virtual void setName(const std::string & _name) =0;
virtual void print() =0;
void DynamicCastTest(){};
};
}
そして2番目:
class ConcreteClass : public Abstract::AbstractClass{
std::string type;
public:
ConcreteClass();
ConcreteClass(char* a);
~ConcreteClass();
static ConcreteClass* CreateConcreteClass(char* a);
virtual void setName(const std::string & _name);
virtual void print();
};
しかし、関数 CreateConcreteClass(char*) を定義したい場合:
static ConcreteClass* CreateConcreteClass(char* a){
ConcreteClass a;
}
オブジェクト 'a' を作成できません。これは、それが抽象オブジェクトであることを示しているためです。
なんで ?