2 つのクラスの一部であるオブジェクトを作成するプログラムを作成しようとしています。
クラス Student があり、次に Node のクラスがあります。そして、同時に Student であり Node であるオブジェクトを作成したいと考えています。私はこれをやってみました:
Student James;
James = new Node;
しかし、それはうまくいきません。これを行う方法について何か助けはありますか?ありがとう。
あなたが探しているのは多重継承です:
class MyClass : public Student, public Node
{
// ...
};
MyClass James;
C++ のこの機能を読みたいと思うかもしれませんが、落とし穴がないわけではありません。
編集
Student
ここでの質問は、との関係は何Node
ですか?
Student
が一種の場合Node
(たとえば、生徒や教師などがいて、これらをすべてノードとして動作させたい場合)、単純にStudent
から継承できますNode
:
class Student : public Node
{
// ...
};
Student James;
この場合、次のこともできます。
Node* James = new Student();
// do stuff with James
delete James;
Student
とが独立している場合Node
、同時に両方として動作できるオブジェクトが本当に必要かどうかを自問する必要があります。Student
おそらく、 aと aをペアにするオブジェクトのみが必要ですNode
。
struct MyStruct
{
Student myStudent;
Node myNode;
};
MyStruct James;
Student
両方として動作できるオブジェクトが実際に必要な場合Node
(これらの 2 つのことは独立していますが)、多重継承が必要になります。
ポリモーフィズムを使用する:
Class Base
{
}
class Student : public Base
{
}
class Node : public Base
{
}
今:
Student s;
Node n;
Base* b = &s;
b = &n;