-1

我正在尝试构建一个程序,我想在其中创建一个属于两个类的对象。

我有一个学生类,然后我有一个节点类。我想创建一个同时是学生和节点的对象。我试过这样做:

            Student James; 
            James = new Node; 

但这不起作用。有关如何执行此操作的任何帮助?谢谢。

4

3 回答 3

0

使用继承http ://en.wikipedia.org/wiki/Inheritance_%28computer_science%29

class Node {
  //....
}

class Student : public Node {
  //....
}

Student James;

您可以将对象James视为Node通过指向基础对象的指针:

Node * p = &James;
于 2013-10-12T13:25:03.853 回答
-1

您正在寻找的是多重继承

class MyClass : public Student, public Node
{
    // ...
};

MyClass James;

您可能想阅读 C++ 的这个特性,它并非没有陷阱。

编辑

Student这里的问题是:和之间的关系是什么Node


如果Student是一种Node(例如,您有学生、老师等,并且您都希望它们充当节点),那么您可以简单地继承StudentNode

class Student : public Node
{
    // ...
};

Student James;

在这种情况下,您还可以执行以下操作:

Node* James = new Student();
// do stuff with James
delete James;

如果StudentNode是独立的,你必须问自己是否真的想要一个可以同时表现两者的对象。也许您只需要一个配对 aStudent和 a的对象Node

struct MyStruct
{
    Student myStudent;
    Node myNode;
};

MyStruct James;

如果您实际上需要一个可以同时充当两者的对象StudentNode即使这两个事物是独立的),那么您将需要多重继承。

于 2013-10-12T13:03:21.903 回答
-2

使用多态性:

Class Base
{
}

class Student : public Base
{
}

class Node : public Base
{
}

现在:

Student s;
Node n;

Base* b = &s;
b = &n;
于 2013-10-12T13:12:01.897 回答