我试图让每个类的实例(在这里命名为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的智能指针解决。非常感谢! –