c++ - 初始化一个类中的指针数组并在另一个类中检索它
问题描述
我想在一个文件中初始化一个指针数组,array.cpp
然后在不同的main.cpp
.
我现在有六个 headers/src 文件:parent.h/cpp
, childA.h/cpp
, childB.h/cpp
.
class Parent(){
public:
Parent();
virtual void sayHi() = 0;
};
Parent::Parent() {}
class ChildA : Parent{
public:
ChildA()
void sayHi();
ChildA::ChildA()
void ChildA::sayHi(){
std::cout << "Hello A!"
}
class ChildB : Parent{
public:
ChildB()
void sayHi();
ChildB::ChildB()
void ChildB::sayHi(){
std::cout << "Hello B!"
}
我了解如何创建一个包含ChildA()
和ChildB()
在main.cpp
类中的指针数组:
Parent *children[3] = {new ChildA(), new ChildB(), new ChildA()}
如果我想在一个不同的文件中初始化它,比如说array.cpp
,并从中检索它main.cpp
怎么办?
我的想法(不工作)
我的粗略想法是在内部创建一个定义类array.h/cpp
,如下所示:
class Array(){
Array();
Parent *get_array(); // I don't know how to define it as an array of pointers
}
Array::Array()
Parent *Array::get_array() {
Parent *array[] = { new ChildA(), new ChildB(), new Child() };
return *array;
}
并在main.cpp
:
Array array;
Parent *children[] = array.get_array(); // It cannot be initialized like this
这不起作用,我不知道如何从这里开始。
解决方案
只需使用 astd::vector
而不是 C 数组:
class Array
{
public:
Array() {}
std::vector<Parent*> get_array();
};
std::vector<Parent*> Array::get_array() {
return { new ChildA(), new ChildB(), new Child() };
}
int main()
{
Array a;
std::vector<Parent*> res = a.get_array();
res[0]->sayHi();
res[1]->sayHi();
res[2]->sayHi();
return 0;
}
推荐阅读
- c# - 如何在 Unity(C#,目前针对 iOS)中设置每周重复推送通知?
- php - PHP循环在计数之间的项目周围添加div
- javascript - 将子对象数组排序到带有对象的新数组
- three.js - 在 GLTF 文件中添加交互点
- c++ - 如何允许编译器查找通过 Brew 安装的库
- python - 如何在 VS Code 笔记本中获得 tqdm progress_apply 栏?
- migration - 试图迁移网上商店,完全迷失并被利用
- javascript - Javascript 更改标记名称的样式
- html - 如何使用 css 定位跨度中的特定文本
- c# - 使用 TLS 会话重用将文件上传到 C# 中的隐式 FTPS 服务器