初始化一个类中的指针数组,然后在另一个中检索它]]

问题描述 投票:0回答:1

我想在文件array.cpp中初始化一个指针数组,并在另一个main.cpp中检索它。

我现在有六个头文件/ src文件:parent.h/cppchildA.h/cppchildB.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

这不起作用,我也不知道如何从这里开始。

我想在文件array.cpp中初始化一个指针数组,并在另一个main.cpp中检索它。我现在有六个头文件/ src文件:parent.h / cpp,childA.h / cpp,childB.h / cpp。 class Parent(){...

c++ arrays pointers inheritance polymorphism
1个回答
0
投票

仅使用std::vector而不是C数组:

© www.soinside.com 2019 - 2024. All rights reserved.