gpt4 book ai didi

c++ - std::vector< base_class * > 使用基类迭代但调用派生类函数

转载 作者:行者123 更新时间:2023-11-28 01:21:19 25 4
gpt4 key购买 nike

<分区>

class c_base_class {  
protected:
. . .
public:
void run( ) {
std::cout << "Error: Run called from base class! \n";
};

};

class c_derived_class : public c_base_class {
protected:
. . .
public:
void run( ) {
std::cout << "Success: Run called from derived class \n";
};

class c_main {
protected:
std::vector<c_base_class*> listings;
public:
void push_base( c_base_class* base ) { listings.push_back( base ); };

void iterate ( ) {
for ( auto listing : listings) {
listing->run( );
};
};

void run( ) {
this->iterate( );
};
}; extern c_main* g_main;
. . .

void some_stuff::run( ) {
g_main->push_base( std::make_unique<c_derived_class>( . . . ).get( ) );
g_main->run( ); // Iterator calls base class 'run' function instead of derived classes 'run' function.
};

请原谅任何错误/错误。这纯粹是我在这里写的伪造的,我相信我想要实现的目标是可以理解的。

如果不是这里有一种解释方式,则有多个派生类,因此只有一个 vector 是没有用的。我想从派生类调用运行,同时只是将基类推回到 vector 中,如代码所示,但是迭代器只是调用基类运行函数。

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