Не могу правильно составить композицию

Я честно смущен, я должен спросить, но я застрял на этом.

#include <iostream>
using namespace std;

class Obj
{
};class Test
{
private:
Obj a;

public:
Test(Obj _a)
: a(_a)
{}
};int main() {

Obj ob();
Test t(ob);

return 0;

}

Я получаю эту ошибку:

t.cpp:24: error: no matching function for call to ‘Test::Test(Obj (&)())’
t.cpp:15: note: candidates are: Test::Test(Obj)
t.cpp:10: note:                 Test::Test(const Test&)

Я не понимаю Тот же фрагмент прекрасно работает со встроенными типами (целыми числами и прочим).

3

Решение

Obj ob(); объявляет ob быть функцией, не принимающей параметров и возвращающей Obj,

Если вы хотите по умолчанию построить Objиспользовать Obj ob; или же Obj ob{};,

4

Другие решения

Эта линия

Obj ob();

не создает объект ob, Он объявляет функцию, которая ничего не принимает в качестве входных данных и возвращает Obj,

Измените это на:

Obj ob;
2

По вопросам рекламы [email protected]