Возможно ли иметь функцию в базовом классе, которая будет иметь возвращаемый тип в качестве указателя на производный класс? основная цель заключается в дальнейшем использовании, когда вы используете Base
и Derived
Класс для установки значений.с использованием возвращаемого типа в качестве указателя на производный класс
Base B1;
B1.SetName("nameOfBase");
Derived* D1 = B1.CreateDerived("DerivedFromBase");//CreateDerived method will be in class Base
D1->SetMinPoint(0,1);//this method will be implemented in derived class
D1->SetMaxPoint(4,4);//this method will be implemented in derived class
Я имею проблемы в реализации, я сделал что-то вроде
class Base
{
public:
Base();
bool SetName(char*);//or SetName(string)
Derived* CreateDerived(char*); // or Derived* CreateDerived(string)
~Base();
protected:
char baseName[20];// or string baseName
Derived* derivedPtr[5];
};
class Derived: public Base
{
public:
Derived();
bool SetName(char*);//the name given in Derived* CreateDerived(char*) will be set here
~Derived();
};
, когда я пытаюсь сделать это и запустить программу я получаю ошибки как
// Derived* CreateDerived(char*); // or Derived* CreateDerived(string)
error C2143: syntax error: missing ';' before '*'
error C4430: missing type identifier: int assumed.
Вы должны найти шаблон завода – alestanis
, почему вы не возвращаете базу *? А Base, имеющий массив Derived *, выглядит как странный дизайн, я бы сказал, –
У вас нет ';' after 'bool SetName (char *)' – psur