C++ 如何使纯虚函数在父类函数中工作
我只是想知道如何使纯虚拟函数在父类函数中工作,例如:C++ 如何使纯虚函数在父类函数中工作,c++,C++,我只是想知道如何使纯虚拟函数在父类函数中工作,例如: class MapGeneric { public: MapGeneric(); vector<int> map(vector<int> vec) { for (int i = 0; i < vec.size(); i++ ) { vec[i] = f(vec[i]); } return vec;} virtual int f(int x) = 0;};#endif 当我编写main.cpp来测试它时
class MapGeneric {
public:
MapGeneric();
vector<int> map(vector<int> vec) {
for (int i = 0; i < vec.size(); i++ ) {
vec[i] = f(vec[i]);
}
return vec;}
virtual int f(int x) = 0;};#endif
当我编写main.cpp来测试它时,它编译但不工作,它仍然返回相同的向量,而不是3倍的向量
using namespace std;int main() {
vector<int> a = {1,2,3};
MapGeneric* m;
m = new MapTriple;
m -> map(a);
for (int i = 0; i<a.size(); i++) {
cout<<a[i];
}}
使用名称空间std;int main(){
向量a={1,2,3};
MapGeneric*m;
m=新映射三元组;
m->map(a);
对于(inti=0;i,这里的问题看起来像是它实际上存在于非虚函数中
您正在丢弃map函数的返回值,因此只需更改此行:
m->map(a);
对于不放弃返回值的对象:
a = m->map(a);
您应该看到更新的3x向量。如何将向量传递给map
函数?您对它返回的向量做了什么?函数f()
需要在MapTriple
的类定义中显式重写(您没有显示)。只需在外部定义它(不与内联)MapTriple
类定义不足。请记住,在MapGeneric
的构造函数中无法调用f()
。
a = m->map(a);