Ich habe eine Klasse mit zwei Konstruktoren, von denen einer keine Argumente und der andere ein Argument benötigt.
Das Erstellen von Objekten mit dem Konstruktor, der ein Argument benötigt, funktioniert wie erwartet. Wenn ich jedoch Objekte mit dem Konstruktor erstelle, der keine Argumente benötigt, erhalte ich einen Fehler.
Wenn ich zum Beispiel diesen Code kompiliere (mit g++ 4.0.1)...
class Foo
{
public:
Foo() {};
Foo(int a) {};
void bar() {};
};
int main()
{
// this works...
Foo foo1(1);
foo1.bar();
// this does not...
Foo foo2();
foo2.bar();
return 0;
}
... Ich erhalte den folgenden Fehler:
nonclass.cpp: In function ‘int main(int, const char**)’:
nonclass.cpp:17: error: request for member ‘bar’ in ‘foo2’, which is of non-class type ‘Foo ()()’
Warum ist das so, und wie kann ich es schaffen?