【发布时间】:2018-01-20 21:00:01
【问题描述】:
#include "stdafx.h"
#include <iostream>
#include <cmath>
using namespace std;
class Enemy {
protected:
public :
virtual void attack(int ){
}
};
class tank : public Enemy {
public: void attack( ){
cout << "attack from tank - " << attack << endl;
}
};
class monster : public Enemy {
public:
void attack( ) {
cout << "attack from mob - "<< attack << endl;
};
};
int main() {
tank tnk;
monster mob;
Enemy *enemy1= &tnk;
Enemy *enemy2 = &mob;
enemy1->attack(30);
enemy2->attack(30);
};
我收到一个错误提示
非标准语法;使用 '&' 在每个 cout 函数上创建一个指向成员的指针。
我没有在虚函数中指定我的int,但是当我尝试它时,它会抛出更多错误!
【问题讨论】:
-
attack是成员函数的名称。你为什么要把它发送到cout? -
实际覆盖
virtual函数时会出现什么错误? (例如:void attack(int value))? -
我没有在虚拟函数中指定我的 int -- 通过省略
int,这些函数不再是“虚拟的”。
标签: c++ class pointers virtual-functions