我有点坚持我的家庭作业,需要一点帮助。我绝对不是在找人为我做作业,但我当然可以使用一些建议。
我真的很抱歉在一个已经发布了几十次的主题上发帖。我已经阅读了我能找到的东西,但我仍然被困住了。
该程序有 3 个与之关联的文件——app.cpp 有 main,student.h 有函数原型(prototype)和类定义。 student.cpp 具有所有功能。
我们刚刚开始学习类(class),而这个作业只是使用类(class)的练习。它比较两个学生 ID 以找出哪个更小,然后检查与该 ID 关联的 gpa 是否足够高以获得荣誉。
当我尝试编译它时,我收到一堆关于未在范围内声明的错误。我的理解是,当未提前声明某些内容时会发生此错误。但我无法弄清楚这可能是什么,因为一切都被宣布了。我让学校的导师快速看了一下,她没有看出问题所在。我将发布我的 3 个文件和我的错误消息 - 我希望它不会太多!
我真的非常感谢任何帮助!
应用程序.cpp
#include "student.h"
int main()
{
Student s1("G10", 3.9);
Student s2("G20", 3.5);
isLessThanByID(s2);
qualifyForHonor(minGpaForHonor);
s1.print();
s2.print();
return 0;
}
学生.h
#ifndef STUDENT_H
#define STUDENT_H
#include <iostream>
using namespace std;
class Student
{
public:
Student(const char initId[], double gpa);
bool isLessThanByID(const Student& aStudent) const;
bool qualifyForHonor(double minGpaForHonor) const;
void print()const;
private:
const static int MAX_CHAR = 100;
char id[MAX_CHAR];
double gpa;
}; double minGpaForHonor = 3.75;
#endif
学生.cpp
void Student::Student(const char initId[], double gpa)
{
id = initId[];
}
bool Student::isLessThanByID(const Student& aStudent) const
if(s1.isLessThanByID (s2) == > 0)
cout << "s1 is greater than s2" << endl;
}
bool Student::qualifyForHonor(double minGpaForHonor, double gpa) const
{
if (gpa >= minGpaForHonor)
{
return true;
}
}
void Student::print() const
{
cout << id << '\t' << gpa << endl;
}
错误
g++ -Wall -g -std=c++11 -c -o app.o app.cpp
app.cpp: In function ‘int main()’:
app.cpp:8:2: error: ‘isLessThanByID’ was not declared in this scope
isLessThanByID(s2);
^~~~~~~~~~~~~~
app.cpp:9:2: error: ‘qualifyForHonor’ was not declared in this scope
qualifyForHonor(minGpaForHonor);
^~~~~~~~~~~~~~~
app.cpp:9:2: note: suggested alternative: ‘minGpaForHonor’
qualifyForHonor(minGpaForHonor);
^~~~~~~~~~~~~~~
minGpaForHonor
<builtin>: recipe for target 'app.o' failed
make: *** [app.o] Error 1
最佳答案
isLessThanByID
和 qualifyForHonor
是类中的成员函数Student
,因此应该在类 Student
的实例上调用.
isLessThanByID(s2);
qualifyForHonor(minGpaForHonor);
应该改为
s1.isLessThanByID(s2);
s1.qualifyForHonor(minGpaForHonor);
话虽如此,您显然有比这更多的错误。函数声明
bool qualifyForHonor(double minGpaForHonor) const
在 Student
类也与其在定义中的签名不匹配。
关于c++ - 未在此范围内声明的函数和变量(c++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60160313/