c ++防止类共享静态对象

时间:2017-05-17 09:32:46

标签: c++ function class static

我使用一些代码(来自How to make static callback c++)来从类这样的类访问main中的函数:

aggregate

但是我想用不同的函数创建同一个类的多个实例,但是因为它在这里声明了" std :: function Foo :: onCallBackResult;"它始终共享相同的功能,无论在何处或如何在类的一个实例中更改它。我的疑问是如何更改它以允许我不共享相同的功能。谢谢!

1 个答案:

答案 0 :(得分:-1)

我认为你正在使用一种错误的方法来调用onCallBackResult函数。你能试试这段代码吗?

    #pragma once #include <functional> 
#include <iostream> class Foo { 
public: std::function<void()> onCallBackResult; 
void start(std::function<void()> callback) { 
onCallBackResult = callback; 
second(); 
} 

void second() { 
//Needs to be static here 
onCallBackResult();
} 
}; 
//std::function<void()> Foo::onCallBackResult; 

void onCallBackResult() { 
std::cout << "Result\n"; 
} 

int main() { 
Foo foo; 
foo.start(std::bind(foo.onCallBackResult)); 
}