我有兩個類都擴展了一個父類。我想寫一個可以接受任何一個類但調用childs函數的函數。一個函數,它接受兩個子類之一併調用它們的相同函數
即:
class employee
{
public:
employee();
virtual ~employee();
int wage;
int hours;
virtual int calculatePay() =0;
};
class factoryWorker : public employee
{
public:
factoryWorker();
int calculatePay();
};
class manager : public employee
{
public:
manager();
int calculatePay();
};
在main.cpp的文件
我有一個函數
int getPay(employee anyTypeOfWorker) {
return anyTypeOfWorker.calculatePay();
}
但這個函數總是調用父(員工)calculatePay()函數沒有被覆蓋的功能。
謝謝。
查找虛擬關鍵字 –
您的main.cpp無法編譯,因爲'employee'是抽象的。 –
注意:您不應該按值傳遞'employee'實例;你會得到[object slicing](http://en.wikipedia.org/wiki/Object_slicing)。 – ruakh