' OBJECT'未在范围内声明

时间:2018-02-06 04:32:37

标签: c++

我的第一个c ++程序,我似乎无法弄清楚为什么它说我的对象'没有在范围内宣布。我已经包含了头文件,我原型化了我的功能。我习惯于在java中进行编码,这种分离对我来说非常困惑。

该计划的目标很简单:创建一个课程:学期。

学期:将有ID,姓名,学分,标记。

提供get / set方法来输入和输出kb

主要

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

int main()
{
  Semester s1;
  cout << "Please enter ID" << endl;
  cin >> sl.setid();
  cout << "ID: " << s1.getid();
}

CPP

 #include <stdio.h>
 #include <iostream>
 #include "Semester.h"

 using namespace std;

 Semester::Semester(){

 }

 //setters
void Semester::setid(string t_id) {id = t_id;}
void Semester::setunit(string t_name) {unit_name = t_name;}
void Semester::setcredit(int t_credit){credit = t_credit;}
void Semester::setmark(int t_marks) {marks = t_marks;}

//getters
string Semester::getid() {return id;}
string Semester::getunit() {return unit_name;}
int Semester::getcredit() {return credit;}
int Semester::getmark() {return marks;}

#ifndef SEMESTER_H
#define SEMESTER_H

#include <stdio.h>
#include <iostream>


class Semester{
   private: //variables
   std::string id;
   std:: string unit_name;
   int credit, marks;

   public:
   Semester(); //constructor
   //setters
   void setid(std::string id);
   void setunit(std::string name);
   void setcredit(int credit);
   void setmark(int marks);

   //getters
   std::string getid();
   std::string getunit();
   int getcredit();
   int getmark();
};
 #endif // SEMESTER_H

1 个答案:

答案 0 :(得分:0)

以下行不正确。

cin >> sl.setid();

该行的问题:

  1. 您正在调用一个期望参数不带参数的函数。
  2. setid()的返回类型为void。这不能用作流提取功能的RHS。
  3. 您需要的是:

    std::string id;
    cin >> id;
    s1.setid(id);
    

    改进建议:制作所有get个函数const成员函数。

    //getters
    std::string getid() const;
    std::string getunit() const;
    int getcredit() const;
    int getmark() const;
    

    确保相应地更新.cpp文件。