gpt4 book ai didi

c++ - 抽象类和对象

转载 作者:行者123 更新时间:2023-11-30 02:55:54 26 4
gpt4 key购买 nike

我得了头等舱:

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;

}

Visual 无法创建对象“a”,因为它告诉我它是一个抽象对象。

为什么?

最佳答案

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

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

编辑:为不返回临时地址添加了静态

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

关于c++ - 抽象类和对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16079599/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com