私は3つのクラスを持っています。それらをクラスA、クラスB、クラスCと呼びましょう。
クラス C はクラス B を継承し、クラス B はクラス A を継承します (クラス B を継承するクラスは他にもあります)。
EG
classC -> classB -> classA
classD -> classB -> classA
classE -> classB -> classA
クラス C オブジェクトを作成したい。
クラス A には変数 'name' があります クラス B には変数 'choice' があります
クラス C オブジェクトのコンストラクターで、指定された名前のオブジェクトを作成する必要があります。
これは、私が .h ファイルを作成した方法です (これは明らかに機能しません)。これらの抽出は、関連する .h ファイルからのものです。クラスごとに .h ファイルと .cpp ファイルがあります。
class classC: public classB {
public:
classC(string name):classA(name){}
};
class classB : public classA {
public:
classB(string name);
void setChoice();
string getChoice();
protected:
string choice;
};
class classA {
public:
classA();
classA(string name);
string getName();
virtual void setChoice();
protected:
string name;
};
.cpp ファイルからの抜粋は次のとおりです。
クラスC **
classC::classC(string name) {}
void classC::setChoice() {
choice = "P";
}
クラスB **
classB::classB(string name):classA(name){}
string classB::getChoice(){
return choice;
}
void classB::setchoice(string newChoice){
choice = newChoice;
}
*クラスA*
classA::classA() {}
classA::classA(string aName):name(aName){}
string classA::getName() {
return name;
}
void classA::setSelection() {}
運転者:
classC* classC1 = new classC("tomato");
class1C->setChoice();
cout << "Name is " << classC1->getName() << endl;
cout << "Choice is " << classC1->getChoice() << endl;
クラスCからクラスZまでの各クラスに独自の特定のsetChoice関数を持たせたいので、setChoiceメソッドを仮想として設定しました。このプロジェクトの仕様にも、この関数は ClassA で宣言する必要があると記載されています。
ClassB には 1 つの引数が必要で、何も指定されていないというエラーが表示されます。
誰かが私を正しい方向に向けてください。私はアイデアがありません。