C++ ไม่อนุญาต ให้ overload ฟังก์ชัน main() ที่ระดับ global จะเกิด compile error (conflicting declarations)
ตัวอย่างที่ Error
int main(int x) { ... }
int main(char* y) { ... }
int main(int x, int y) { ... }
int main() { main(10); main("Hello"); main(15,25); } // Error: multiple definitions of main
วิธีแก้: ใช้เป็น Member Function ของ Class
main ไม่ใช่ reserved keyword ใน C++ (ต่างจาก C) จึงใช้เป็นชื่อ method ได้
class MyClass {
public:
int main(int x) { cout << "x: " << x; return 0; }
int main(char* y) { cout << "y: " << y; return 0; }
int main(int x, int y) { cout << x << ", " << y; return 0; }
};
int main() {
MyClass obj;
obj.main(10);
obj.main("Hello");
obj.main(15, 25);
}
ผลลัพธ์
Value of x: 10 Value of string y: Hello Value of x and y: 15, 25