c++ 防止类共享静态对象
c++ Prevent class from sharing static object
我有一些代码(来自如何制作静态回调 c++(,我用它来从这样的类访问 main 中的函数:
#include <functional>
#include <iostream>
class Foo
{
public:
static std::function<void()> onCallBackResult;
void start(std::function<void()> callback)
{
onCallBackResult = callback;
second();
}
static void second() { //Needs to be static here
onCallBackResult();
}
};
std::function<void()> Foo::onCallBackResult;
void onCallBackResult()
{
std::cout << "Resultn";
}
int main() {
Foo foo;
foo.start(std::bind(onCallBackResult));
}
但是我想使用不同的函数创建同一类的多个实例,但由于它在这里声明为"std::function Foo::onCallBackResult;",它总是共享相同的函数,无论我在哪里或如何更改它在一个类的实例中。我在这里的疑问是如何更改它以允许我不共享相同的功能。谢谢!
我认为您使用了错误的方法调用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 << "Resultn";
}
int main() {
Foo foo;
foo.start(std::bind(foo.onCallBackResult));
}
相关文章:
- CPU 瓶颈;处理具有许多非静态对象的 3D 场景渲染的简单方法
- 我可以读取静态对象中的文件.txt吗?C++
- 通过 Gazebo 世界插件将静态对象附加到机器人链接
- 将对象创建为全局/静态对象会崩溃,而本地对象不会崩溃
- 内联函数的函数本地静态对象是否在共享对象文件之间共享?
- 将 C# 对象(包含静态对象成员)作为参数传递给 C++/CLI 程序
- 完全释放静态对象内存
- 静态对象指针
- C++文件中.cpp静态对象声明
- C++类中定义静态对象
- 在初始化类的静态对象之前,是否保证初始化该类的静态成员?
- 静态对象如何调用私有构造函数
- cpp 静态对象实例化
- 等效于 Java 静态对象类C++
- 我怎么知道C++编译器是否制作线程安全的静态对象代码
- 在dlclose()之前破坏的静态对象
- 有没有办法为静态对象成员定义一个符合开关标准的常量?
- c++ 防止类共享静态对象
- 什么时候构造函数为静态对象
- 为什么本地静态对象的初始化使用隐藏的防护标志?