Troubles with reference variables/pointers an class members [C++] -
i've been working on project , have quite few classes, few of this:
class { // stuff; }; class b { a& test; public: b(a& _test) : test(_test) {}; void dostuff(); }; class c { foo; b bar(foo); void exp() { bar.dostuff(); } };
this ends breaking in class c when c::foo not type name. in bigger project, broken separate .cpp , .h files, don't see error if #include"c.h" in b.h, there still error in c.cpp bar unrecognized compiler (visual studio 2013). there error persists if a& a* instead (changing code references pointers necessary, of course). have tips going on here?
this line of code:
b bar(foo);
attempts declare member function named bar
returns b
, takes argument of type foo
. however, in code, foo
not type - it's variable. i'm guessing meant initialize bar
instead:
b bar{foo}; // non-static data member initializers must done {}s
or write out constructor:
c() : bar(foo) { }
additionally, constructor assigns reference test
temporary _test
:
b(a _test) : test(_test) { }
you want take _test
reference:
b(a& _test) : test(_test) { }
Comments
Post a Comment