0

我用谷歌搜索了这条错误消息,但找不到与我的案例的关系。

我试着做一个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

(每行中的每个错误)。

你能帮我找出问题吗?提前致谢。

4

2 回答 2

2

您应该在 createFactory 中使用类名之前声明 MercedesFactory 和其他。您还需要将 createFactory 实现移动到 .cpp 文件中。

于 2013-07-31T02:31:48.983 回答
2

您正试图在编译器看到它们的定义之前创建您的类。将 createFactory 函数的主体移动到类定义下方,最好是在源文件中。无论如何,您应该避免将整个函数放在类中。

于 2013-07-31T02:32:02.883 回答