我正在编写一个类,其中多个实例像链表一样链接在一起。这是相关代码的准系统示例:
class A
{
public:
void setNext(const A& node) { next = &node; }
const A& getNext() const { return *next; }
private:
const A* next;
}
我已将参数声明为setNext
asconst
因为node
没有被setNext
. A 类也不修改下一个节点,所以next
声明了成员变量const
。问题发生在getNext
. 无论对象从当前节点获取下一个节点,可能都需要修改该节点,但既然成员变量是const
返回的引用,也必须如此const
。
从我读过const_cast
的内容来看,通常表明设计不佳,但似乎我必须在获取下一个节点的对象内部使用它,或者在 A 类中使用它来返回非常量引用。这是const_cast
对我的设计的有效使用还是在某处存在缺陷?
当我们讨论这个主题时,对于返回引用还是指针,是否存在一种偏好?我有setNext
一个参考来确保我得到一个有效的 A 实例,但是返回的值可以以任何一种方式返回。