Я погуглил это сообщение об ошибке, но не могу найти связь с моим делом.
Я пытался сделать 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
(Каждая ошибка в каждой строке).
Можете ли вы помочь мне найти проблему? заранее спасибо.
Вы пытаетесь создать свои классы до того, как компилятор увидит их определения. Переместите тело вашей функции createFactory ниже определений классов, желательно в исходном файле. В любом случае вы должны избегать помещения целых функций в классы.
Вы должны объявить MercedesFactory и другие, прежде чем использовать имена классов в createFactory.
Вам также необходимо переместить реализацию createFactory в файл .cpp.