Как передать в поток ссылку на объект класса?

Есть объект класса в main, который должен передаваться (как я понимаю по ссылке) и изменяться в потоке, пока тот не завершится. Но не компилируется код. Вычитал что надо обернуть в ref объект класса, но я запутался в том где ref, где указатель, где ссылка, вылетает куча ошибок линкера.... Помогите пожалуйста Упрощённо:

class A
{
public:
    int a,b;
    A():a(1),b(5){}
    void Print(){cout<<a<<"\t"<<b<<endl;}
} ;
void SomeFunc(A _obj)
{
    _obj.a++;
    _obj.b--;
}
int main()
{
    A obj;
    thread t1(SomeFunc, obj);
    t1.join();
    obj.Print(); // должны вывестись измененные переменные 
}

Ответы (1 шт):

Автор решения: Mikhailo

Передавать надо по ссылке, и все будет получаться:

#include <iostream>
#include <thread>

using namespace std;

class A {
    public:
        int a, b;
        A(): a(1), b(5) {}
        void Print() {
            cout << a << "\t" << b << endl;
            }
    };
void SomeFunc(A& _obj) {
    _obj.a++;
    _obj.b--;
    }
int main() {
    A obj;
    thread t1(SomeFunc, std::ref(obj));
    t1.join();
    obj.Print(); // должны вывестись измененные переменные
    }
→ Ссылка