c++ - 语法错误 : identifier `MercedesFactory` ?

标签 c++ design-patterns 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

(每行中的每个错误)。

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

最佳答案

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

关于c++ - 语法错误 : identifier `MercedesFactory` ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17960602/

相关文章:

c++ - C++中的 boolean 错误

c++ - 在 case 语句中使用 {}。为什么?

java - 验证多层应用程序输入数据的最佳实践

ios - swift3中针对不同目标设计通用决策文件

php - 没有方法重载的 PHP 中的抽象工厂

c++ - Arduino 串口解析

python - 无法与 boost.python 和 python3 链接

c# - 有登录的设计模式吗?

ios - 在 Swift 中将数据源分离到另一个类,然后处理数据更改

android - 如何在不影响生产数据库的情况下测试使用 ContentProvider 的 Activity?