抽象类和对象

时间:2013-04-18 09:45:19

标签: c++ object abstract

我上了第一堂课:

namespace Abstract{

    class AbstractClass{
    public:

        virtual void setName(const std::string & _name) =0;
        virtual void print() =0;
        void DynamicCastTest(){};

    };

}

还有第二个:

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',因为它告诉我它是一个抽象对象。

为什么?

1 个答案:

答案 0 :(得分:3)

我用VC10尝试过。它给了我错误C2082告诉我像重新定义形式参数a(我有一个德语安装,所以你的错误信息可能会有所不同)。 只需重命名您的变量:

ConcreteClass* ConcreteClass::CreateConcreteClass(char* a)
{
    return new ConcreteClass(a); 
}

编辑:添加静态,以便不返回临时

的地址

第二次编辑:使CreateConcreteClass成为静态工厂函数