在设计类别的时候一般不会直接 return private member 的 reference,
而是提供 getter 和 setter,这是封装上的考量。
但我现在有个类别设计上的疑虑,以下是个简化的范例:
class IDrive
{
public:
virtual void run(void) = 0;
};
class CDDrive: public IDrive
{
public:
void run(void) { /* do something */ }
};
class Computer
{
public:
const IDrive& getDrive() const { return drive; }
private:
CDDrive drive;
};
现在我有个外部函式需要 IDrive 类别作为引数,
void foo(IDrive &drive);
如果我直接呼叫 foo(computer.getDrive());
编译时会遇到 const 报错。
想问一下这种情况应该要 return reference 吗?
或是有其他更好的设计?谢谢!