C++ C++;基类和派生类方法
我有一个名为AddOns的基类,这个类有9个派生类。我还将向量定义为shared_ptr AddOnsContainer.hC++ C++;基类和派生类方法,c++,class,oop,inheritance,C++,Class,Oop,Inheritance,我有一个名为AddOns的基类,这个类有9个派生类。我还将向量定义为shared_ptr AddOnsContainer.h std::vector<std::shared_ptr<AddOns>> container; 我只想在一个派生类(SearchProviders)中重写它。对于其他派生类,我希望使用AddOns.h中实现的代码。该方法被定义为virtual,这本应该对我有所帮助,但我的代码仍然为每个派生类运行基方法,即使是我已经重写的类 下面是派生类的方法的定
std::vector<std::shared_ptr<AddOns>> container;
我只想在一个派生类(SearchProviders)中重写它。对于其他派生类,我希望使用AddOns.h中实现的代码。该方法被定义为virtual,这本应该对我有所帮助,但我的代码仍然为每个派生类运行基方法,即使是我已经重写的类
下面是派生类的方法的定义,它应该做一些不同的事情
搜索提供者
virtual void ChangeDefaultSearchProvider() override final;
从这里我调用该方法:
AddOnsContainer.cpp
void AddOnsContainer::ChangeDefaultSearchProvider(int pId)
{
container[pId]->ChangeDefaultSearchProvider();
}
void AddOnsContainer::ChangeDefaultSearchProvider(int pId)
{
container[pId]->ChangeDefaultSearchProvider();
}
因此,有人能帮助我理解我应该如何在基类中定义方法,以便以后我可以在我的一个派生类中重写它
否则,我应该在每个派生类中实现这个方法,但我知道这不是OOP和继承的概念
提前谢谢大家
致以最良好的祝愿,
马里奥P
附言
这是我向向量添加项(SearchProviders)的代码:
SearchProvider searchProviders;
while (searchProviders.FindNext())
{
add_item(searchProviders);
}
谢谢大家的帮助 在创建最小代码的过程中,我发现了代码中的问题 问题在于: AddOnsContainer.cpp
void AddOnsContainer::ChangeDefaultSearchProvider(int pId)
{
container[pId]->ChangeDefaultSearchProvider();
}
void AddOnsContainer::ChangeDefaultSearchProvider(int pId)
{
container[pId]->ChangeDefaultSearchProvider();
}
因为我直接传递pId
,我需要减去1,因为目前我不使用图形界面,我只使用控制台变量
然而,由于我花了一些时间来创建我的原始代码的一些最小变化,我决定用Stackoverflow中的链接将其上传到GitHub
可通过以下方式访问代码:
再次感谢大家!
最好的,
Mario P.看起来是正确的,因此创建对象并将其添加到向量的代码是相关的。我建议将代码缩减为mcve。如果这无助于解决您的问题,请将其发布在此处。如果我没有找到任何不同的解决方案,我很可能会尝试减少代码并将其发布在此处。可能是切片问题?除此之外,您是否有证据证明
容器
中的派生对象当前并非都被视为加载项
?一切正常,肯定是其他地方出了问题。你可以试穿一下