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)
你有一个指针数组,这些指针是未初始化的,因为你没有告诉他们在哪里指向.使用未初始化的指针会导致未定义的行为,这在您的情况下表现为崩溃.
你应该有一个对象数组,因为这里没有指针:
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)