[問題] 關於 return reference
在設計類別的時候一般不會直接 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 嗎?
或是有其他更好的設計?謝謝!
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.114.56.147
※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1400473677.A.E37.html
推
05/19 12:39, , 1F
05/19 12:39, 1F
→
05/19 12:41, , 2F
05/19 12:41, 2F
→
05/19 14:31, , 3F
05/19 14:31, 3F
→
05/19 15:31, , 4F
05/19 15:31, 4F
→
05/19 15:32, , 5F
05/19 15:32, 5F
推
05/20 13:33, , 6F
05/20 13:33, 6F
→
05/20 13:34, , 7F
05/20 13:34, 7F
→
05/20 13:34, , 8F
05/20 13:34, 8F
→
05/20 13:35, , 9F
05/20 13:35, 9F
→
05/20 13:35, , 10F
05/20 13:35, 10F
→
05/20 13:36, , 11F
05/20 13:36, 11F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 3 篇):