Tôi có một lớp với hai hàm tạo, một lớp không có đối số và một lớp lấy một đối số.
Tạo các đối tượng bằng cách sử dụng hàm tạo có một đối số hoạt động như mong đợi. Tuy nhiên, nếu tôi tạo các đối tượng bằng cách sử dụng hàm tạo không có đối số, tôi sẽ gặp lỗi.
Chẳng hạn, nếu tôi biên dịch mã này (sử dụng 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;
}
... Tôi nhận được lỗi sau đây:
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 ()()’
Tại sao điều này, và làm thế nào để tôi làm cho nó hoạt động?