我正在尝试构建一个程序,我想创建一个属于两个类的对象。
我有班级学生,然后我有一个Node课程。我想创建一个同时是学生和节点的对象。我试过这样做:
Student James;
James = new Node;
但这不起作用。 有关如何做到这一点的任何帮助?谢谢。
答案 0 :(得分:0)
使用继承:http://en.wikipedia.org/wiki/Inheritance_%28computer_science%29
class Node {
//....
}
class Student : public Node {
//....
}
Student James;
您可以通过指向基础对象的指针将对象James
视为Node
:
Node * p = &James;
答案 1 :(得分:-1)
您正在寻找的是多重继承:
class MyClass : public Student, public Node
{
// ...
};
MyClass James;
你可能想要阅读C ++的这个功能,它并非没有缺陷。
修改强>
这里的问题是:Student
和Node
之间的关系是什么?
如果Student
是一种Node
(例如,您有学生,教师等,并且您都希望这些作为节点),那么您只需继承Student
{ {1}}:
Node
在这种情况下,你也可以这样做:
class Student : public Node
{
// ...
};
Student James;
如果Node* James = new Student();
// do stuff with James
delete James;
和Student
是独立的,您必须问自己是否真的想要一个可以同时表现的对象。也许您只需要一个将Node
和Student
配对的对象:
Node
如果你确实需要一个可以同时表现为struct MyStruct
{
Student myStudent;
Node myNode;
};
MyStruct James;
和Student
的对象(即使这两个东西是独立的),那么你需要多重继承。
答案 2 :(得分:-2)
使用多态:
Class Base
{
}
class Student : public Base
{
}
class Node : public Base
{
}
现在:
Student s;
Node n;
Base* b = &s;
b = &n;