class 结构中的对象数组
class object array inside struct
我需要将 class 个对象的数组放入结构中。
头文件里面的class:
class aClass
{
private:
int num;
public:
aClass();
~aClass();
int getNum();
void setNum(int num);
}
另一个头文件中的typedef
#include "aClass.hpp"
typedef struct
{
aClass* classObject[3];
} newType_t;
至少申请
newType_t l_obj;
l_obj.classObject[1]->getNum();
编译器可以运行,但在执行时出现分段错误。如何正确定义类型?
非常感谢
亚历克斯
第二次尝试:
aClass.hpp
class aClass
{
private:
int num;
public:
aClass();
~aClass();
int getNum();
void setNum(int num);
};
app.hpp
class aClass;
typedef struct
{
aClass classObject[3];
} newType_t;
app.cpp
newType_t l_obj;
l_obj.classObject[1].getNum();
g++
error: field 'classObject' has incomplete type
再试一次:
aClass.hpp
class aClass
{
private:
int num;
public:
aClass();
~aClass();
int getNum();
void setNum(int num);
};
app.hpp
#include "aClass.hpp"
typedef struct
{
aClass classObject[3];
} newType_t;
app.cpp
newType_t l_obj;
l_obj.classObject[1].getNum();
g++
error: 'aClass' does not name a type
您有一个 指针数组 ,它们未初始化,因为您没有告诉它们指向何处。使用未初始化的指针会导致未定义的行为,在您的案例中表现为崩溃。
你应该有一个对象数组,因为这里没有指针:
aClass classObject[3];
注意删除声明中的 *
。您可以通过以下方式调用该方法:
l_obj.classObject[1].getNum();
此外,typedef struct
是不必要的。您可以直接命名您的结构:
struct newType_t { .. }
您尚未初始化您的指针,因此使用 _obj.classObject[1]->
访问它们会导致未定义的行为(如分段错误)。
newType_t l_obj;
这声明了 newType_t
class 的实例,其中包含三个指向 aClass
class.
实例的指针
指针未初始化为指向任何有效的实例化对象。
l_obj.classObject[1]->getNum();
这取消了对数组中第二个指针的引用。由于此指针未初始化为有效的实例化对象。在您的情况下,这会导致分段错误。
我需要将 class 个对象的数组放入结构中。
头文件里面的class:
class aClass
{
private:
int num;
public:
aClass();
~aClass();
int getNum();
void setNum(int num);
}
另一个头文件中的typedef
#include "aClass.hpp"
typedef struct
{
aClass* classObject[3];
} newType_t;
至少申请
newType_t l_obj;
l_obj.classObject[1]->getNum();
编译器可以运行,但在执行时出现分段错误。如何正确定义类型?
非常感谢 亚历克斯
第二次尝试:
aClass.hpp
class aClass
{
private:
int num;
public:
aClass();
~aClass();
int getNum();
void setNum(int num);
};
app.hpp
class aClass;
typedef struct
{
aClass classObject[3];
} newType_t;
app.cpp
newType_t l_obj;
l_obj.classObject[1].getNum();
g++
error: field 'classObject' has incomplete type
再试一次:
aClass.hpp
class aClass
{
private:
int num;
public:
aClass();
~aClass();
int getNum();
void setNum(int num);
};
app.hpp
#include "aClass.hpp"
typedef struct
{
aClass classObject[3];
} newType_t;
app.cpp
newType_t l_obj;
l_obj.classObject[1].getNum();
g++
error: 'aClass' does not name a type
您有一个 指针数组 ,它们未初始化,因为您没有告诉它们指向何处。使用未初始化的指针会导致未定义的行为,在您的案例中表现为崩溃。
你应该有一个对象数组,因为这里没有指针:
aClass classObject[3];
注意删除声明中的 *
。您可以通过以下方式调用该方法:
l_obj.classObject[1].getNum();
此外,typedef struct
是不必要的。您可以直接命名您的结构:
struct newType_t { .. }
您尚未初始化您的指针,因此使用 _obj.classObject[1]->
访问它们会导致未定义的行为(如分段错误)。
newType_t l_obj;
这声明了 newType_t
class 的实例,其中包含三个指向 aClass
class.
指针未初始化为指向任何有效的实例化对象。
l_obj.classObject[1]->getNum();
这取消了对数组中第二个指针的引用。由于此指针未初始化为有效的实例化对象。在您的情况下,这会导致分段错误。