gpt4 book ai didi

c++ - 从指向基类对象的指针 vector 调用派生类的独特函数

转载 作者:行者123 更新时间:2023-11-28 06:11:45 24 4
gpt4 key购买 nike

#include <iostream>
#include <vector>

using namespace std;

class Base
{
public:
void speak() { cout << "Hello!"; }
};

class Derived1 : public Base
{
public:
void func1() { cout << "I'm a function!"; }
};

class Derived2 : public Base
{
public:
void func2() { cout << "I'm also a function!"; }
};

int main()
{
vector<Base*> v = { new Derived1(), new Derived2(), new Derived1(), new Derived2() //, ...
};
// For each Derived1 object invoke func1() and for each Derived2 object invoke func2()
}

Base 不是多态的(没有虚函数)。根据这些条件,我如何才能为 v 中的每个 Derived1 对象调用 func1 并为每个 Derived2 对象调用 func2?

最佳答案

"Base is not polymorphic (no virtual function)."

你仍然可以做 static_cast<Derived1>(v[0])/static_cast<Derived2>(v[1]) , a.s.o,只要您确定在特定索引处会得到什么。

关于c++ - 从指向基类对象的指针 vector 调用派生类的独特函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31126926/

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