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);