C++ 在C+;中通过函数调用线程更改对象属性+;
如何更改C++ 在C+;中通过函数调用线程更改对象属性+;,c++,multithreading,class,object,methods,C++,Multithreading,Class,Object,Methods,如何更改av1的属性,使其不在线程内调用方法?C++中,编译器是正常的,但在运行时会产生致命错误。 #include <iostream> #include<thread> using namespace std; class Airplane{ public: int vel = 0; Airplane *air1; void change_av1(){ air1->vel = 3; cout &l
av1
的属性,使其不在线程内调用方法?C++中,编译器是正常的,但在运行时会产生致命错误。
#include <iostream>
#include<thread>
using namespace std;
class Airplane{
public:
int vel = 0;
Airplane *air1;
void change_av1(){
air1->vel = 3;
cout << air1->vel << endl;
system("pause");
}
};
void myFunction();
int main(){
Airplane *air1=new Airplane();
myFunction();
return 0;
}
void myFunction(){
Airplane *object=new Airplane();
thread first(&Airplane::change_av1, object); // meu método dentro da thread
first.join();
}
#包括
#包括
使用名称空间std;
等级飞机{
公众:
int-vel=0;
飞机*air1;
无效更改_av1(){
air1->vel=3;
cout vel您的代码完全错误。它应该看起来更像这样:
#include <iostream>
#include <thread>
using namespace std;
class Airplane{
public:
int vel = 0;
void change_vel(){
vel = 3;
cout << vel << endl;
}
};
void myFunction();
int main(){
myFunction();
system("pause");
return 0;
}
void myFunction(){
Airplane *object = new Airplane;
thread first(&Airplane::change_vel, object);
first.join();
delete object;
}
#包括
#包括
使用名称空间std;
等级飞机{
公众:
int-vel=0;
无效更改级别(){
vel=3;
在我使用的库中,对象是在类中声明的。而且,当一个线程中发生许多事情时,我只需要它,更改某些对象的属性。然后,我可能是错的……但是,我只需要这样做,通过一个在线程内调用的函数来更改对象的属性……”我只需要它,更改某些对象的属性。”-你知道当其他线程同时访问相同的数据时,如果你这样做会发生什么吗?是的,我有想法。谢谢。但是,在我的应用程序中,这一点非常重要。也许,我从某种角度看情况是错的。如果有人能给出其他方法或解决方案……但是,线程内部发生的事情,会改变一个对象的方面…“是的,我有想法”-这个想法是什么?“线程内部发生的事情”-但如果你不是某种量子物理程序员,事情是可以预测的。你只需要处理选项。现代操作系统:es帮助你同步事件。你的main
有air1=新飞机()
-但是你的删除在哪里?不要手动管理内存!