struct中的类对象数组

Ale*_*x44 1 c++ arrays struct typedef class

我需要在结构中放置一个类对象数组.

头文件中的类:

class aClass
{
private:
   int num;
public:
   aClass();
   ~aClass();
   int getNum();
   void setNum(int num);
}
Run Code Online (Sandbox Code Playgroud)

另一个头文件中的typedef

#include "aClass.hpp"

typedef struct
{
   aClass* classObject[3];
} newType_t;
Run Code Online (Sandbox Code Playgroud)

至少应用程序

newType_t l_obj;
l_obj.classObject[1]->getNum();
Run Code Online (Sandbox Code Playgroud)

编译器工作但在执行时会出现分段错误.如何正确定义类型?

非常感谢Alex


第二次尝试:

aClass.hpp

class aClass
{
private:
   int num;
public:
   aClass();
   ~aClass();
   int getNum();
   void setNum(int num);
};
Run Code Online (Sandbox Code Playgroud)

app.hpp

class aClass;

typedef struct
{
   aClass classObject[3];
} newType_t;
Run Code Online (Sandbox Code Playgroud)

app.cpp

newType_t l_obj;
l_obj.classObject[1].getNum();
Run Code Online (Sandbox Code Playgroud)

克++

error: field 'classObject' has incomplete type
Run Code Online (Sandbox Code Playgroud)

另一个尝试:

aClass.hpp

class aClass
{
private:
   int num;
public:
   aClass();
   ~aClass();
   int getNum();
   void setNum(int num);
};
Run Code Online (Sandbox Code Playgroud)

app.hpp

#include "aClass.hpp"
typedef struct
{
   aClass classObject[3];
} newType_t;
Run Code Online (Sandbox Code Playgroud)

app.cpp

newType_t l_obj;
l_obj.classObject[1].getNum();
Run Code Online (Sandbox Code Playgroud)

克++

error: 'aClass' does not name a type
Run Code Online (Sandbox Code Playgroud)

0x4*_*2D2 5

你有一个指针数组,这些指针是未初始化的,因为你没有告诉他们在哪里指向.使用未初始化的指针会导致未定义的行为,这在您的情况下表现为崩溃.

你应该有一个对象数组,因为这里没有指针:

aClass classObject[3];
Run Code Online (Sandbox Code Playgroud)

请注意删除*声明中的内容.你可以这样做来调用方法:

l_obj.classObject[1].getNum();
Run Code Online (Sandbox Code Playgroud)

而且,typedef struct是不必要的.您可以直接命名您的结构:

struct newType_t { .. }
Run Code Online (Sandbox Code Playgroud)