以下是关于继承的问题。
class A {
public:
virtual string F() = 0;
};
class B: public A {
public:
string F() {
return "B";
}
};
int main() {
B b;
A* ap = &b;
cout << b.F() << ap->F();
return 0;
}
有谁能告诉我为什么这段代码不能编译?
答案 0 :(得分:2)
您需要包含定义string
类型和cout
流的标头,这些标头都位于std
命名空间中:
#include <iostream>
#include <string>
using namespace std;
class A {
public:virtual string F()=0;
};
class B: public A {
public: string F() {
return "B";
}
};
int main(){
B b; A* ap=&b;
cout<<b.F()<<ap->F();
return 0;
}
答案 1 :(得分:0)
您需要在std命名空间的代码开头包含头文件。
gist