gpt4 book ai didi

c++ - 从基类调用继承类的方法。 C++

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:01:42 24 4
gpt4 key购买 nike

我想要一个函数,它接收一个包含基类元素的 vector 并执行相应继承类的方法。我不知道是否应该在基类中定义一个虚函数。无论如何,只要我不希望继承的类是抽象的,它就不能是纯虚函数。

class A {
public:
void printSubclass() {
std::cout << "No subclass found";
}
};

class B : public A {
public:
void printSubclass() {
std::cout << "Subclass B";
}
};

class C : public A {
public:
void printSubclass() {
std::cout << "Subclass C";
}
};

void function(vector<A> MyVec) {
for(int k=0; k<Myvec.size(); k++)
MyVec[k].printSubclass();
}

int main() {
B ObjB;
C ObjC;
vector<A> MyVector= {ObjB, ObjC}
function(ObjB);
return 0;
}

最佳答案

您需要将 printSubclass 设为虚拟(是否纯粹取决于“A”的实际对象是否有意义,而不是取决于与派生类有关的任何事情)。而且不管 printSubclass 是否纯, vector 都需要是 A* 而不是直接的 A 对象。每当您将非 A 对象放入 vector 时, vector 包含“A”对象,非 A 部分就会被切掉。

关于c++ - 从基类调用继承类的方法。 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58646540/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com