我試圖讓每個類的實例(在這裏命名爲Caller
)具有另一個類的實例(Target
)。關鍵是第二堂課有很多孩子,我需要能夠隨意在他們之間切換Caller
。我嘗試了幾種方法,但沒有一個給我任何理想的結果。當前代碼:將類更改爲子類
class Target
{
public:
virtual void do_something()
{ log_message("NO!"); }
};
class TargetChild : public Target
{
public:
virtual void do_something()
{ log_message("YES!"); }
};
class Caller
{
private:
Target target;
public:
void call_target()
{ target.do_something(); }
void set_target(Target set_target)
{ target = set_target; }
};
int main(int argc, const char* argv[])
{
TargetChild targetChild;
Caller caller;
caller.call_target();
caller.set_target(targetChild);
caller.call_target();
}
日誌文件中想要的結果是「NO!YES!」但是它寫了NO!兩次。我真的不知道它有什麼問題。
非常感謝。由於我已經包含它,可能會嘗試Boost方式。 –
使用Boost的智能指針解決。非常感謝! –