ฉันมีคลาสที่มีคอนสตรัคเตอร์สองตัวอันที่ไม่มีข้อโต้แย้งและอีกหนึ่งที่ใช้อาร์กิวเมนต์เดียว
การสร้างออบเจ็กต์โดยใช้ Constructor ที่รับหนึ่งอาร์กิวเมนต์ทำงานได้ตามที่คาด อย่างไรก็ตามถ้าฉันสร้างวัตถุโดยใช้ Constructor ที่ไม่มีข้อโต้แย้งฉันได้รับข้อผิดพลาด
ตัวอย่างเช่นถ้าฉันรวบรวมรหัสนี้ (ใช้ 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;
}
... ฉันได้รับข้อผิดพลาดต่อไปนี้:
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 ()()’
ทำไมสิ่งนี้และฉันจะทำให้มันทำงานอย่างไร