From: Jose F. <jrf...@em...> - 2001-09-06 09:23:46
|
Making > Foo f(); is a common mistake. This declares a function f with no arguments that returns Foo. what you want is > Foo f; wich invokes the default constructor. ----- Original Message ----- From: "Lloyd Dupont" <ll...@ga...> To: <min...@li...> Sent: Thursday, September 06, 2001 10:05 AM Subject: [Mingw-users] C++ & constructor question > i have a code like this > > ---------------------- > #include <iostream.h> > > class Foo > { > public: > Foo() { cout << "Foo::Foo()" << endl; } > ~Foo() { cout << "Foo::~Foo()" << endl; } > > void dump() { cout << "Foo::dump()" << endl; } > }; > > int main() > { > Foo f(); > f.dump(); > } > ----------------------- > and whe i try to compile it output the following error: > f.cc: In function `int main()': > f.cc:15: request for member `dump' in `f', which is of non-aggregate type `Foo ()()' > > ?? what does this mean ? > worst, if i supper the call to dump (f.dump()), this compile but i see it never call Foo's constructor (and destructor of course...) |