class man {
public:
void do_something();
}
int main(){
man Joe, Peter, Steve;
Joe.do_something();
Peter.do_something();
Steve.do_something();
return 0;
}
只有一个独一无二的人
,叫做Joe
。与 Peter
和 Steve
相同。他们所做的事情有一些独特之处。我可能会生成数百个 man
实例,我需要为每个实例重新定义 do_something()
函数。
我不喜欢的两次尝试:
1) Joe
作为单例类,继承自 man。
2) 将函数指针传递给 do_something()
。
我想为 man
的每个实例重新定义 do_something()
函数。可能吗?
最佳答案
最简单的做法是将操作作为参数传递给构造函数。
您可以使用 std::function
或 lambda。
或者创建另一个“ Action ”类。
class Action
{
public:
virtual ~Action();
virtual void something() = 0;
};
如果您从这里继承您想要的细节,那么每个 man
都可以使用 do_something
方法中的操作。
关于c++ - 为每个实例重新定义方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51380723/