c ++构造函数问题

时间:2013-01-22 02:42:38

标签: c++ constructor linker

我最近在使用其他语言几年后开始使用c ++,但我无法使用构造函数编译代码。我知道问题是构造函数,因为如果我评论它一切正常。我直接从c ++书中复制了一些代码,但我仍然遇到错误。我正在使用g ++编译命令行。 编译器错误:

Undefined symbols for architecture x86_64:
  "GradeBook::GradeBook(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)", referenced from:
      _main in ccoPO1iA.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status

非常感谢任何帮助

gradeBookTest.cpp

#include <iostream>
#include "GradeBook.h"

using namespace std;

int main()
{
GradeBook book1("newClass");
}

GradeBook.h

#include <string>

using namespace std;

class GradeBook
{
public:
GradeBook(string);
void setCourseName(string);
string getCourseName();
void displayMessage();

private:
string courseName;
};

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 << "this is the gradebook for\n" << getCourseName() << endl;
}

当我将代码复制到浏览器中时,缩进以某种方式弄乱了......

1 个答案:

答案 0 :(得分:2)

您还需要与GradeBook.cpp一起编译gradeBookTest.cpp。发生这种情况是因为编译器可以在.h中看到构造函数,但是来链接时间,该构造函数的函数定义无处可见。

g++ -o test GradeBookTest.cpp GradeBook.cpp