我是C ++的新手,我无法理解这段代码中的错误。我接受了这个错误:
ClCompile:
1> Student.cpp
1>Student.obj : error LNK2019: unresolved external symbol "public: void __thiscall Student::setExamGrade(int,int)" (?setExamGrade@Student@@QAEXHH@Z) referenced in function _main
1>c:\users\administrator\documents\visual studio 2010\Projects\LAB1\Debug\LAB1.exe : fatal error LNK1120: 1 unresolved externals
1>
1>Build FAILED.
你能帮帮我吗?代码在这里:
#ifndef STUDENT_H
#define STUDENT_H
#include <string>
using namespace std;
class Student
{
private:
int ID;
string name;
int *exams;
public:
Student();
Student(int ID, string name);
void setExamGrade(int index, int grade);
int getOverallGrade();
void display();
};
#endif
#include "Student.h"
#include <iostream>
using namespace std;
int total;
int count;
int average;
int exams[3];
void main() {
Student *s = new Student(123, "John");
s->setExamGrade(0, 80);
s->setExamGrade(1, 60);
s->setExamGrade(2, 95);
s->display();
delete s;
}
Student :: Student()
{
ID = 0;
name = "";
}
Student :: Student(int num, string text)
{
this->ID = num;
this->name = text;
}
void setExamGrade(int index, int grade)
{
exams[index] = grade;
total += exams[index];
count = index +1;
}
int getOverallGrade()
{
average = total/count;
return average;
}
void Student :: display()
{
cout << "ID:" << ID << "NAME:" << name << "GRADE:" << endl;
}
答案 0 :(得分:3)
您声明方法:
void setExamGrade(int index, int grade);
课程内Student
但是你没有定义方法。您确实定义了一个具有相同名称的函数。
void setExamGrade(int index, int grade)
{ // STUFF
}
但这不是方法定义,
答案 1 :(得分:2)
我认为您错过了Student ::
和setExamGrade
之前的getOverallGrade
。
答案 2 :(得分:1)
你有这样的定义
void setExamGrade(int index, int grade) { .. }
这只是一个功能本身,它不属于一个类。你想要
void Student::setExamGrade(int index, int grade) { .. }
答案 3 :(得分:1)
“未解析的外部符号”表示链接器找不到相关代码的主体。
在这种情况下,它是找不到其正文的Student::setExamGrade
方法。
您的代码似乎已定义了一个setExamGrade
函数,但未将其标记为Student::
方法(以Student::display
成功完成的方式)