我正在尝试构建一个程序,我想在其中创建一个属于两个类的对象。
我有一个学生类,然后我有一个节点类。我想创建一个同时是学生和节点的对象。我试过这样做:
Student James;
James = new Node;
但这不起作用。有关如何执行此操作的任何帮助?谢谢。
使用继承:http ://en.wikipedia.org/wiki/Inheritance_%28computer_science%29
class Node {
//....
}
class Student : public Node {
//....
}
Student James;
您可以将对象James
视为Node
通过指向基础对象的指针:
Node * p = &James;
您正在寻找的是多重继承:
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
是独立的,你必须问自己是否真的想要一个可以同时表现两者的对象。也许您只需要一个配对 aStudent
和 a的对象Node
:
struct MyStruct
{
Student myStudent;
Node myNode;
};
MyStruct James;
如果您实际上需要一个可以同时充当两者的对象Student
(Node
即使这两个事物是独立的),那么您将需要多重继承。
使用多态性:
Class Base
{
}
class Student : public Base
{
}
class Node : public Base
{
}
现在:
Student s;
Node n;
Base* b = &s;
b = &n;