我有一个类,其中一个私有属性是该类的一个实例。在 Java 中(因为我习惯了 Java),这看起来像:
class Node {
private Node Pi;
}
现在我正在用 C++ 编写它,当我尝试做同样的事情时,我得到一个红色下划线(我使用的是 Visual C++ 2010 Express),“不允许不完整的类型”。
class Node {
private:
Node Pi; //Incomplete type is not allowed
};
我已经尝试通过将其更改为来解决此问题,Node Pi(void);
但是为什么我尝试使用另一个修改此属性的函数我得到“表达式必须是可修改的左值”。
class Node {
private:
Node Pi(void);
public:
void setPi(Node n);
};
void Node::setPi(Node n) {
Pi = n; //Node Node::Pi() expression must be a modifiable lvalue
}
通常在Java中没有问题,所以我的问题是,我该如何实现呢?我不是 C++ 的初学者,但我有一段时间没有用它写过。
class Node {
private Node Pi;
void setPi(Node n) {
this.Pi = n;
}
}