指向类的指针数组
C++ - Array of pointers to classes
我希望这里有人能帮助我。
所以这是我的问题:我有一个主班和三个其他班。现在我要创建一个数组每个索引都指向其中一个类。我知道如何用这样一个类来实现它:
Class1* array[10];
然后我可以对每个索引使用这个:
array[i] = new Class1;
但是有可能声明一个数组,然后使用这样的东西吗?
array[0] = new Class1;
array[1] = new Class2;
array[2] = new Class3;
向Synotix致以亲切的问候
是的,你可以这样做但是为了达到这个目的,你必须在c++中使用继承和多态性。
你能做的是。创建一个父类,即
Class parent {
// Some common code here
// Some virtual function here
}
然后继承你所有的类,就像在你的例子中,Class1, Class2, Class3from parent类。还可以在父类中创建虚方法,以在c++中获得多态性。
用这种方法你就能做这件事了。
parent * allClasses[10];
allClasses[1]= new Class1();
allClasses[2]= new Class2();
allClasses[3]= new Class3();
这是你想要的一个完整的例子。点击此链接有人能解释一下多态性的好处吗?
如果你使用一个主类作为父类,并且Class1, Class2 and Class3
类应该是主类的子类,这是可能的。
如果你所有的类(1-3)extend
从类,例如ParentClass
你可以写:
ParentClass* array[n];
ParentClass* class1 = new Class1();
ParentClass* class2 = new Class2();
ParentClass* class3 = new Class3();
//...
array[0] = class1;
//... classes 2 and 3
下面是一个如何在c++中扩展类的示例。
这是可能的,但是你想对数组做什么?如果你的所有类都有一个共同的基类,那么你可以定义你的数组来包含指向该基类的指针,然后你可以像你所做的那样向数组中添加类。
为了使用你的类,你需要在基类上通过virtual
方法来实现。
virtual
析构函数,这意味着当你对数组的元素进行delete
时,它将调用派生类的析构函数。另外,我建议使用智能指针代替原始指针,这样你就不需要调用delete
。下面是一个例子,我使用vector
代替数组和类模板来定义类:
#include <memory>
#include <vector>
#include <iostream>
class MyBase {
public:
virtual ~MyBase() {}
virtual void hello() = 0;
};
template<int N>
class MyClass : public MyBase {
public:
virtual void hello(){ std::cout << "Hello, I am Number" << N << std::endl; }
};
int main() {
std::vector<std::unique_ptr<MyBase>> my_classes;
my_classes.emplace_back(new MyClass<1>());
my_classes.emplace_back(new MyClass<2>());
my_classes.emplace_back(new MyClass<3>());
for(auto& my_class : my_classes)
my_class->hello();
}
相关文章:
- 指向指向字符数组的指针数组的指针
- 通过指向指针数组的指针访问子类的属性
- C++,指针数组,指向双链表中的条目
- 在C++中,如何初始化指向wchar_t*的指针数组(生成wchar_t**)
- C++从函数指针数组调用函数
- 关于指向指针数组的指针
- 将返回值存储在函数指针数组的指针中是如何工作的?
- 将链表转换为指针数组时出错
- C++ 对象指针数组的复制构造函数
- C++ - 循环访问指针数组会导致错误
- 删除指针数组 (C++) 中的元素
- 如何循环访问 cpp 中的函数返回的字符指针数组
- 将函数指针数组中的函数指针作为模板参数传递
- Google Or-Tools Glop:如何创建指向 const 对象的指针数组?
- 具有推导参数的模板函数指针数组变量
- 如何模板化堆栈分配的多态指针数组到接口,包括派生类型的相应点?
- C++指针数组到字符数组中的特定位置
- 如何在C++中复制指针数组的数据
- 初始化类中的指针数组,并在另一个类中检索它
- 尽管直接设置了指针数组,但仍为空