【发布时间】:2018-09-05 16:10:12
【问题描述】:
我来自 C#,习惯于创建某个类的实例,然后调用线程在该对象上执行类方法,修改其特定变量。这是一个 c#-ish 示例:
class myclass
{
public:
int i = 0;
void method ()
{
i++;
}
}
// then my main
myclass obj1 = new myclass();
myclass obj2 = new myclass();
myclass obj3 = new myclass();
thread first = new thread (obj1.method);
thread second = new thread (obj2.method);
thread third = new thread (obj3.method);
在这里我希望我可以访问 obj1.i、obj2.i、obj3.i 并且它们是 = 1。 我似乎无法在 C++ 中复制这种行为,可能是非常愚蠢的事情,我发现的所有解决方案都是使用静态方法,但这首先违背了我的代码的目的。
【问题讨论】:
-
我建议您尝试在不使用
new的情况下重新编写此内容。 C++ 不是 C# -
或者,如果你真的想让人们出风头;在它之前添加一个删除;因此得到
delete new std::thread(thing)(不认真-不要这样做) -
这当然是一个例子,因为我不知道如何用 C++ 编写这个,这是问题的重点,如果你不想帮忙,为什么还要麻烦回答? :(
-
要获取非静态成员函数的地址,C++ 语法为
&myclass::method。仅仅靠猜测,你永远不会得到正确的 C++。 -
@MicheleEmiliani 这不是在 C++ 中做
this;它是关于缺少一些核心语言功能,例如如何在堆栈和堆上创建对象;如何不发生内存泄漏等。最后;我没有回答;这是评论区;我发表评论是为了为您指明如何改进的正确方向。
标签: c# c++ multithreading class