【问题标题】:How to solve this task using classes, vectors and etc如何使用类、向量等解决此任务
【发布时间】:2021-02-02 14:29:00
【问题描述】:

所以我开始使用 OOP C++ 进行新的编程,我有以前的编程经验。无论如何,我们从类、对象和构造函数开始。我有点理解,但仍然对这个特定的任务有问题。我需要用类和向量来制作它。所以我需要这样做,在程序结束时它会打印出平均通过考试的结果。当我编写类并在 Student 类中添加此属性时,程序显示 Informatics 错误:

名称后跟:: 必须是一个类

我尝试了很多方法,但仍然无法弄清楚。你能帮我解决它吗,不仅仅是name followed by :: must be a class,而是整个程序。代码如下。 int main() 是任务中给出的原始代码

#include <iostream>
#include <string>
#include <vector>

using namespace std;


class School
{
public:

};

class Informatics {
public:


};


class Student
{
public:
    string name;
    string surname;
    int passed;
    Student(string _name, string _surname, int _passed) {
        name = _name;
        surname = _surname;
        passed = _passed;
    }
};


int main() {
    School::Informatics::Student Ante("Ante", "Antic", 10); // 10 passed exams..
    School::Informatics::Student Ivica("Ivica", "Ivic", 12); // 12 passed exams..
    cout << School::Informatics::Student::AveragePassedExams() << endl; // 11 = (10+12)/2
    return 0;
}

【问题讨论】:

  • 您是否已经在讲座中介绍过命名空间?这个练习看起来希望你使用它们
  • @idclev463035818 好吧,由于 OP 使用 using namespace std;,他们可能对 namespaces 有一个粗略的理解:-P
  • School::Informatics::Student 你想用这个实现什么?当您将它们定义为单独的类时,为什么要连接它们?

标签: c++ class object vector constructor


【解决方案1】:

粗略地说,您可以将:: 视为指定一个事物在另一个事物内部声明。通过执行School::Informatics::Student,编译器将查找在Informatics 中声明的Student,在School 中声明。

但问题在于您显示的代码,这些类没有以这种方式相互声明。他们是分开的。所以如果你想实例化一个Student,那么就做Student Ante("Ante", "Antic", 10);之类的事情。

另一方面,如果您的目标确实是将Student 嵌套在其他类/命名空间中,则可以通过使School::Informatics::Student 有效的方式来实现。但不清楚这是否是你的意图。

【讨论】:

  • 如果您真正的目标是继承层次结构,请停止。学生不是学校,因此将学生建模为学校只会导致痛苦。
猜你喜欢
  • 1970-01-01
  • 2021-04-29
  • 2020-01-19
  • 1970-01-01
  • 2022-01-24
  • 1970-01-01
  • 1970-01-01
  • 2016-06-30
  • 1970-01-01
相关资源
最近更新 更多