0

嗨!我是 C++ 新手,我尝试制作一些动态结构。这些是:

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;
}

有人可以帮忙吗?

4

2 回答 2

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];

完全重新考虑这条线......

于 2013-09-11T17:24:51.333 回答
0

要指定嵌套类型,您必须使用外部类型名称,而不是外部类型的对象:

Cschools::Syear

但是,在 C++11 中,如果需要,您可以从对象中获取该类型:

decltype(school[0])::Syear

由于是私有的,您也会遇到麻烦,因为这是使用关键字Syear定义的类成员的默认设置。class您需要使用struct关键字或添加public:说明符。

然后你应该学会不要使用new,除非你真的需要动态分配。

于 2013-09-11T18:30:14.217 回答