c++ - 为每个实例重新定义方法

标签 c++ oop

class man {
  public:
    void do_something();
}

int main(){
  man Joe, Peter, Steve;
  Joe.do_something();
  Peter.do_something();
  Steve.do_something();

  return 0;
}

只有一个独一无二的,叫做Joe。与 PeterSteve 相同。他们所做的事情有一些独特之处。我可能会生成数百个 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/

相关文章:

c++ - 测量时间,结果相同

C++ 和虚方法覆盖

java - 如何在 Hibernate 中使用面向对象编程?

php - 具体类是否应该遵循其接口(interface)的类型提示?

.net - 在多个项目中使用相同的模块

oop - OO 编程中的子类型和继承有什么区别?

python - 如何将类成员方法的参数列表自动填充到可变参数中?

C++ 无效参数,候选为 : ".." on Setters from different classes

c++ - glReadPixels 始终在 glClearColor 中返回相同的值

javascript - 如何向 JavaScript 对象添加方法并使用该对象的变量