Прошло некоторое время с тех пор, как мне пришлось писать код на C++, и я чувствую себя глупо. Я написал код, который похож на, , но это не совсем, код ниже:Как создать родительский класс в качестве дочернего класса
class Parent
{
...
};
class Child : public Parent
{
...
};
class Factory
{
static Parent GetThing() { Child c; return c; }
};
int main()
{
Parent p = Factory::GetThing();
Child c1 = p; // Fails with "Cannot convert 'Parent' to 'Child'"
Child c2 = (Child)p; // Fails with "Could not find a match for 'TCardReadMessage::TCardReadMessage(TCageMessage)'"
}
Я знаю, что это должно быть простым, но я не уверен, что я делаю неправильно.
Я не понимаю, что делает Фабрика. Похоже, что он возвращает локальную переменную. Является ли этот объект действительным? – John
@John: он возвращает копию локального объекта. Возврат по значению, поэтому не имеет значения, впоследствии ли умирает оригинал (и, конечно же, он делает). Ничего плохого в этом, кроме того, что это не подходит для заводской функции ... –
Да, метод GetThing в классе Factory возвращает локальную переменную. Который, видимо, не будет делать то, что я хочу. Вместо этого я должен использовать указатели. По крайней мере, согласно ответам ниже. – Mykroft