有没有一种方法可以在容器中插入抽象类?否
。基类是否可以访问派生类?使用虚函数。
有没有办法使此示例代码正常工作,并使控制台吠叫?容器
有没有办法vector
保留实例而不是引用/指针?
std::vector
只有在我使用实例的引用计数器的情况下,将指针存储在中才是安全的,这是我的最后选择。我想念什么吗?
class CAnimal
{
public:
virtual void soundsLike()
{
cout<<"Base function\n";
}
};
class CDog: public CAnimal
{
public:
void soundsLike()
{
cout<<"Woof\n";
}
};
class CZoo
{
public:
std::vector<CAnimal> animalList;
void addDog()
{
animalList.push_back(CDog());
}
};
控制台输出基本功能消息:
int main(int argc, char* argv[])
{
CZoo nationalPark;
nationalPark.addDog();
nationalPark.animalList.front().soundsLike(); //Calls the base function.
return 0;
}
你可以用 std::unique_ptr
std::vector< std::unique_ptr<CAnimal> > zoo;
zoo.push_back(new CDog());
zoo[0]->soundsLike();
不好吗 unique_ptr将为您处理破坏。
我认为您不能使用引用。另外,我认为您目前无法将其设为“树皮”。只有“ woof”。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句