Я честно смущен, я должен спросить, но я застрял на этом.
#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&)
Я не понимаю Тот же фрагмент прекрасно работает со встроенными типами (целыми числами и прочим).
Obj ob();
объявляет ob
быть функцией, не принимающей параметров и возвращающей Obj
,
Если вы хотите по умолчанию построить Obj
использовать Obj ob;
или же Obj ob{};
,
Эта линия
Obj ob();
не создает объект ob
, Он объявляет функцию, которая ничего не принимает в качестве входных данных и возвращает Obj
,
Измените это на:
Obj ob;