level 1
奶油柠檬喵🍁
楼主
我有一个结构体,里面包含一个int,两个类变量
struct A{
int a = 0;
ClassX myclass1; //有默认构造函数
ClassY myclass2; //构造函数需要带参数
};
然后这样不行,因为myclass2没有默认构造函数,所以必须写成:
struct A{
int a = 0;
ClassX myclass1;
ClassY myclass2(0);
};
但是这样报错了,说找不到myclass2的函数定义,因为它把这一行当成了一个函数
于是我只能这样:
struct A{
void createClassY(){
ClassY tmp(0);
myclass2 = &tmp;
}
int a = 0;
ClassX myclass1;
ClassY* myclass2;
};
这样虽然可以运行,但是是错误的,因为tmp是一个临时变量,指针虽然在,但是
指向的对象会被释放掉,导致指针指向了野地址
加上static可以解决这个问题,但仍然有错误。比如当我构造两个结构体对象时就会出问题:
struct A{
....
}A1,A2;
上面这两个结构体,会共用同一个myclass2,显然不合逻辑。
所以我的需求是:给一个struct定义一个没有默认构造函数的类成员,可以在struct
生成的时候就完成它的生成,且每一个struct独立拥有一个这样的类成员,可在程序
的任何地方访问ClassY中的内容
2022年04月12日 15点04分
1
struct A{
int a = 0;
ClassX myclass1; //有默认构造函数
ClassY myclass2; //构造函数需要带参数
};
然后这样不行,因为myclass2没有默认构造函数,所以必须写成:
struct A{
int a = 0;
ClassX myclass1;
ClassY myclass2(0);
};
但是这样报错了,说找不到myclass2的函数定义,因为它把这一行当成了一个函数
于是我只能这样:
struct A{
void createClassY(){
ClassY tmp(0);
myclass2 = &tmp;
}
int a = 0;
ClassX myclass1;
ClassY* myclass2;
};
这样虽然可以运行,但是是错误的,因为tmp是一个临时变量,指针虽然在,但是
指向的对象会被释放掉,导致指针指向了野地址
加上static可以解决这个问题,但仍然有错误。比如当我构造两个结构体对象时就会出问题:
struct A{
....
}A1,A2;
上面这两个结构体,会共用同一个myclass2,显然不合逻辑。
所以我的需求是:给一个struct定义一个没有默认构造函数的类成员,可以在struct
生成的时候就完成它的生成,且每一个struct独立拥有一个这样的类成员,可在程序
的任何地方访问ClassY中的内容