HY!我是c ++的新手,我尝试制作一些动态结构。 Theese是:
class Cschools
{
struct Syear
{
float *marks;
};
};
int main()
{
Cschools *school=new Cschools[5]; //this linking is pretty good
school[0].Syear *year=new school[0].Syear[5]; //there are some errors
return 0;
}
有人可以帮忙吗?
答案 0 :(得分:1)
这可能会让你朝着正确的方向前进。
class Cschools
{
public:
struct Syear{
float *marks;
}year;
};
你必须明白你正在声明一个结构。您将访问year
而不是Syear
,因为year
“对象”不是Syear。
实际上为什么在这里使用结构呢?你应该宣布。
class Cschools{
public:
float *marks;
};
Cschools
还应该有一个合适的构造函数。
这里缺少关于课程的许多基础知识。
school[0].Syear *year=new school[0].Syear[5];
完全重新考虑这条线......
答案 1 :(得分:0)
要指定嵌套类型,必须使用外部类型名称,而不是外部类型的对象:
Cschools::Syear
尽管如此,在C ++ 11中,如果需要,可以从对象中获取该类型:
decltype(school[0])::Syear
由于Syear
是私有的,您也会遇到问题,因为这是使用class
关键字定义的类成员的默认设置。您需要使用struct
关键字,或添加public:
说明符。
然后你应该学会不使用new
,除非你真的需要动态分配。