Изменение свойства объекта с помощью вызова функции потока в C ++ - PullRequest
0 голосов
/ 25 мая 2019

Как я могу изменить свойство 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();
}

1 Ответ

1 голос
/ 25 мая 2019

Ваш код неверен. Вместо этого он должен выглядеть примерно так:

#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;
}
...