关于将Interface与实现分离的几个问题

时间:2016-03-13 16:44:32

标签: c++ class interface implementation

好的,我有这个标题

using namespace std;

class students
{
private:
struct record {
    int RUID;
    string first_name;
    string last_name;
    vector<double>quiz_grades;
    array<double, 3>exam_grades;
};

vector<record>student_records;

public:

friend void change_name();
void setRUID (int idnt);
void setFirstName (string first);
void setLastName (string last);
void setQuiz (vector<double> quiz);
void setExam (array<double, 3> exam);

};

我必须在一个单独的cpp文件中编写该类的所有函数。

我尝试了以下内容:

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

void students::setRUID (int idnt)
{
      RUID = idnt;
}

但是如何访问班级学生中的struc?

如果我尝试这个void students::record::setRUID (int idnt)它没有用,因为记录中没有setRUID的声明。

问题2。 每个学生我需要3个随机分数进行测验和考试。我知道该怎么做但是我宣布这个功能是对的吗?

问题3。 我在哪里声明向量的大小? 虽然这里有一些错误会有效吗?

void students::setQuiz(vector<double> quiz)
{
  int size = 3;
  quiz_grades.resize(size);
  quiz.resize(size);
  srand(0);
  for ( int i = 0; i < size; i++ )
  {
    quiz[i] = rand()%100 + 0;
  }

  for ( int i = 0; i < size; i++ )
  {
    quiz_grades[i] = quiz[i];
  }
}

或者我是否使用main为每个学生插入随机成绩?

基本上这是要求

&#34; 编写用于类定义的头文件,用于类的函数的cpp文件和main.cpp文件。&#34;

我是这个主题的新手,我们将不胜感激任何帮助。感谢

1 个答案:

答案 0 :(得分:0)

我回答了第一个问题。 结构就像是类,它们只是模板。首先,他们需要实例化。你在类中的结构看起来像这样。

class student {
    struct record {
        int RUID;
    };
// instantiate structure
    record recordInstance;
public:
    void setRUID();
    };

现在RUID可以通过类和结构实例进行访问。

下一步,只需将setRUID()函数修改为:

void students::setRUID (int idnt) {
      recordInstance.RUID = idnt;
}

类似的问题: struct in class