gpt4 book ai didi

c++ - 语法错误,无法在 C++ 类中使用结构

转载 作者:行者123 更新时间:2023-11-30 01:11:34 31 4
gpt4 key购买 nike

我目前正在学习 C++ 并正在完成一项要求我创建的作业:

Class student (must be separated by .h and .cpp) that inherits class person that has:
a. Attributes: dynamic array of struct holding courses and their grades and other attributes
b. Member functions: display the grade of a given course and other member functions as as needed

所以,首先,我已经创建了类 person;所以不用担心继承和类,我唯一​​的问题是结构,这是我的代码:

学生.h

#include <string>
#ifndef student_h
#define student_h
#include "person.h"
class student: public person {

private:
struct stud {
int age;
};

public:
student();
int getAge();
};

#endif

学生.cpp

#include <iostream>
#include <string>
using namespace std;
#include "student.h"


student::student() {


}

int student::getAge() {

return stud.age;
}

所以,我的逻辑是,以同样的方式,如果你在 .h 文件中定义一个私有(private)整数并在 .cpp 文件中自由使用它,我应该为结构做这件事。当我在运行 main.cpp 之前尝试针对语法错误编译 student.cpp 时,出现此错误:

.\student.cpp(14) : error C2275: 'student::stud' : illegal use of this type as an expression

指的是return stud.age;。我正在使用(并且被迫使用)Visual Studio 2005。

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

最佳答案

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

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

现在 stud_t 是类型的名称,stud 是该类型变量的名称。

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

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

关于c++ - 语法错误,无法在 C++ 类中使用结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35900424/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com