如何创建从同一类继承的不同对象的向量
How do I create a vector of different objects that inherit from the same class?
我有不同的对象,如Triangle、Plane、Sphere等,它们都继承自objects类。我想创建这些不同对象的向量,然后循环遍历每个元素并对它们执行操作。我正在尝试制作一个光线跟踪器,我想在场景中放置很多不同的对象,但我不知道如何制作。OBJECTS是一个抽象类,所以我不能生成向量,因为我可以创建它的实例。我应该创建一个全新的类,并让所有的形状类从中继承吗?或者我应该重新生成objects类,使其不再抽象?感谢您的帮助。我的下一个最佳猜测是对象指针。
正如注释所建议的那样,您可以这样做。
class Object{
public:
virtual ~Object()= default;
virtual void foo() = 0;
};
class Pane: public Object{
public:
~Pane() = default;
void foo() override{
std::cout << "Hello Pane" << std::endl;
}
};
class Triangle: public Object{
public:
~Triangle() = default;
void foo() override{
std::cout << "Hello Triangle" << std::endl;
}
};
int main(){
std::vector<std::unique_ptr<Object>> objects;
objects.emplace_back(std::make_unique<Triangle>());
objects.emplace_back(std::make_unique<Pane>());
for(auto &object: objects){
object->foo();
}
return 0;
}
只需创建一个对象指针向量。请注意,您不必使用unique_pointers
,但我强烈建议使用它,因为您不需要删除最后的对象。
这个简单程序的输出是:
Hello Triangle
Hello Pane
相关文章:
- 如何创建从同一类继承的不同对象的向量
- 如果'C'公开继承'B',B 私下继承'A',为什么我不能在"C"中创建"A"的对象?
- 如何创建没有特定定义的随机分布?uniform_int_distribution是从其他类继承的吗?
- 从抽象类继承以创建另一个抽象类时,我应该重新声明所有虚函数吗?
- 了解虚拟继承类 vtables 和 vptr 创建
- 如何从继承的父类创建unique_ptr
- 创建一个具有两个可能继承的类
- 如何创建一个继承自 std::vector 的类
- 是否有可能有一个派生类继承最终函数但创建相同的函数(而不是重写)
- 创建一系列超类的指针,以分配继承的类
- 如何创建从版本继承的CMAKE配置类型
- 动态创建一个继承的类,使用STD :: MAP使用基类指针访问
- 创建一个函数,该函数返回具有现有类继承的不同类型
- 如何允许一个类由另一个类创建而不使用'friend'但允许继承?
- 创建继承自C++中io类的异常类
- 你能在不使用C++进行子类型划分的情况下创建继承吗
- 自动创建继承的实例
- 如何在c++中从头文件中的类创建继承类
- 怀疑自创建继承类的链接问题
- 如何在c++中创建继承结构时设置父成员