0
我对C++刷牙和运行这个错误:未定义的符号,定义在头文件和实现文件级
Undefined symbols for architecture x86_64:
"GradeBook::getCourseName()", referenced from:
_main in gbDriver-a5418c.o
"GradeBook::GradeBook(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >)", referenced from:
_main in gbDriver-a5418c.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
这是我的驱动程序文件(命名为gbDriver.cpp
):
#include <iostream>
#include "GradeBook.h"
using namespace std;
int main()
{
GradeBook gradeBook1("CS101 Introduction to C++ Programming");
GradeBook gradeBook2("CS102 Data Structures in C++");
cout << "gradeBook1 created for course: " << gradeBook1.getCourseName() << "\ngradeBook2 created for course: " << gradeBook2.getCourseName() << endl;
}
这里是我的头文件中,我定义的类(接口)(命名为Gradebook.h
):
#include <string>
using namespace std;
class GradeBook
{
public:
GradeBook(string);
void setCourseName(string);
string getCourseName();
void displayMessage();
private:
string courseName;
};
下面是我实现的GradeBook类的成员函数(名为GradeBook.cpp
)文件:我在尝试通过运行编译运行到上述错误
#include <iostream>
#include "GradeBook.h"
using namespace std;
GradeBook::GradeBook(string name)
{
setCourseName(name);
}
void GradeBook::setCourseName(string name)
{
courseName = name;
}
string GradeBook::getCourseName()
{
return courseName;
}
void GradeBook::displayMessage()
{
cout << "Welcome to the grade book for\n" << getCourseName() << "!" << endl;
}
:g++ gbDriver.cpp
。这是怎么回事?
我知道可能是一件简单的事情,但我无法弄清楚,这是让我疯狂。它似乎不需要我的编译器,所以我猜我的代码在某个地方是错误的。
感谢您的帮助。
显示完全编译命令...... –
感谢巴西莱。从包含所有三个文件的目录:'g ++ gbDriver.cpp' – nacho
您必须列出所有需要编译的'.cpp'文件。 – kfsone