Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
语法错误,无法在c++;班 我目前正在学习C++,并且在一个作业中要求我创建:_C++_Class_Struct - Fatal编程技术网

语法错误,无法在c++;班 我目前正在学习C++,并且在一个作业中要求我创建:

语法错误,无法在c++;班 我目前正在学习C++,并且在一个作业中要求我创建:,c++,class,struct,C++,Class,Struct,继承具有以下属性的班级人员的班级学生(必须用.h和.cpp分隔): a。属性:结构持有课程及其成绩和其他属性的动态数组 b。成员函数:根据需要显示给定课程的成绩和其他成员函数 因此,首先,我已经创建了类人;所以不要担心继承或类,我唯一的问题是结构,下面是我的代码: 学生 #包括 #ifndef学生会 #定义学生 #包括“person.h” 班级学生:公众人士{ 私人: 结构螺柱{ 智力年龄; }; 公众: 学生(); int getAge(); }; #恩迪夫 student.cpp #包括

继承具有以下属性的班级人员的班级学生(必须用.h和.cpp分隔): a。属性:结构持有课程及其成绩和其他属性的动态数组
b。成员函数:根据需要显示给定课程的成绩和其他成员函数

因此,首先,我已经创建了类人;所以不要担心继承或类,我唯一的问题是结构,下面是我的代码:

学生
#包括
#ifndef学生会
#定义学生
#包括“person.h”
班级学生:公众人士{
私人:
结构螺柱{
智力年龄;
};
公众:
学生();
int getAge();
};
#恩迪夫
student.cpp
#包括
#包括
使用名称空间std;
#包括“student.h”
学生::学生(){
}
int student::getAge(){
回程时间;
}
因此,我的逻辑是,以同样的方式,如果您在.h文件中定义一个私有整数,并在.cpp文件中自由使用它,那么我应该为struct执行此操作。在运行
main.cpp
之前,当我尝试编译
student.cpp
以获取synthax错误时,我得到以下错误:

.\student.cpp(14):错误C2275:'student::stud':非法使用此类型作为表达式

这是指
返回螺柱.age。我正在使用(并被迫使用)VisualStudio2005


如何使用函数检索结构的年龄?还有,我的老师所说的结构数组是什么意思?这是否意味着我必须在main中创建数组以及如何创建?

嵌套类
stud
定义一个新类型,而不是该类型的变量。如果希望创建类型为
stud
的变量,请为其声明一个单独的成员,如下所示:

class student: public person {
private:
        struct stud_t {
            int age;
        };
        stud_t stud;
public:
        student();
        int getAge();
};
class student: public person {
private:
        struct {
            int age;
        } stud;
public:
        student();
        int getAge();
};
struct {
    int age;
} stud;
现在,
stud\t
是类型的名称,
stud
是该类型变量的名称

或者,您可以将
stud
设置为匿名
struct
,如下所示:

class student: public person {
private:
        struct stud_t {
            int age;
        };
        stud_t stud;
public:
        student();
        int getAge();
};
class student: public person {
private:
        struct {
            int age;
        } stud;
public:
        student();
        int getAge();
};
struct {
    int age;
} stud;

嵌套类
stud
定义了一个新类型,而不是该类型的变量。如果希望创建类型为
stud
的变量,请为其声明一个单独的成员,如下所示:

class student: public person {
private:
        struct stud_t {
            int age;
        };
        stud_t stud;
public:
        student();
        int getAge();
};
class student: public person {
private:
        struct {
            int age;
        } stud;
public:
        student();
        int getAge();
};
struct {
    int age;
} stud;
现在,
stud\t
是类型的名称,
stud
是该类型变量的名称

或者,您可以将
stud
设置为匿名
struct
,如下所示:

class student: public person {
private:
        struct stud_t {
            int age;
        };
        stud_t stud;
public:
        student();
        int getAge();
};
class student: public person {
private:
        struct {
            int age;
        } stud;
public:
        student();
        int getAge();
};
struct {
    int age;
} stud;

如果您真的想在内部结构中存储内容(我认为您不应该这样),那么您可以这样编写结构:

class student: public person {
private:
        struct stud_t {
            int age;
        };
        stud_t stud;
public:
        student();
        int getAge();
};
class student: public person {
private:
        struct {
            int age;
        } stud;
public:
        student();
        int getAge();
};
struct {
    int age;
} stud;
在您的示例中,您正在声明类型为
stud
的结构,但没有创建实例。在上面的代码片段中,我声明了一个匿名结构(即它的类型没有名称),然后创建了一个名为
stud
的实例。 如果进行此更改,您当前的
getAge
应该可以工作


“dynamic array”==vector

如果您真的想在内部结构中存储内容(我认为您不应该这样),那么您可以这样编写结构:

class student: public person {
private:
        struct stud_t {
            int age;
        };
        stud_t stud;
public:
        student();
        int getAge();
};
class student: public person {
private:
        struct {
            int age;
        } stud;
public:
        student();
        int getAge();
};
struct {
    int age;
} stud;
在您的示例中,您正在声明类型为
stud
的结构,但没有创建实例。在上面的代码片段中,我声明了一个匿名结构(即它的类型没有名称),然后创建了一个名为
stud
的实例。 如果进行此更改,您当前的
getAge
应该可以工作


“dynamic array”==vector

嵌套类定义(结构)就是这样。它不声明该类型的数据成员。顺便说一下,前缀<代码>获取<代码>只是C++中烦人的冗长用法。您不会为余弦函数编写
getCos(x)
,对吗?同样,只要
age
就可以访问或计算年龄。哦,最好存储出生年份,而不是年龄。否则数据会很快过时。嵌套类定义(结构)就是这样。它不声明该类型的数据成员。顺便说一下,前缀<代码>获取<代码>只是C++中烦人的冗长用法。您不会为余弦函数编写
getCos(x)
,对吗?同样,只要
age
就可以访问或计算年龄。哦,最好存储出生年份,而不是年龄。否则数据会很快过时。谢谢,我的问题解决了,我现在明白了。谢谢你,我的问题解决了,我现在明白了。你太棒了\m/