我用Google搜索了此错误消息但我无法找到与我的案例的关系。
我尝试制作cars abstract factory
:
#include <iostream>
using namespace std;
class IFactory
{
public:
enum FACTORIES { MERCEDES, AUDI, SKODA };
virtual const char* getCar() = 0;
static IFactory* createFactory(FACTORIES factory)
{
if(factory == MERCEDES)
return new MercedesFactory;
if(factory == AUDI)
return new AudiFactory;
else
return new SkodaFactory;
}
};
class AudiFactory : public IFactory
{
public:
const char* getCar()
{
return "Audi";
}
};
class MercedesFactory : public IFactory
{
public:
const char* getCar()
{
return "EClass";
}
};
class SkodaFactory : public IFactory
{
public:
const char* getCar()
{
return "Octavia";
}
};
我有3个错误:
error C2061: syntax error : identifier 'MercedesFactory'
error C2061: syntax error : identifier 'AudiFactory'
error C2061: syntax error : identifier 'SkodaFactory'
在线:
return new MercedesFactory
return new AudiFactory
return new SkodaFactory
(每行中的每个错误)。
你能帮我找到问题吗?提前谢谢。
答案 0 :(得分:2)
在createFactory中使用类名之前,您应该声明MercedesFactory和其他人。 您还需要将createFactory实现移动到.cpp文件中。
答案 1 :(得分:2)
您正在尝试在编译器看到其定义之前创建类。将createFactory函数的主体移动到类定义下面,最好是在源文件中。无论如何,你应该避免将整个函数放在类中。