"错误LNK2019:未解析的外部符号" public:__ thishisall:constructor"关心

时间:2015-06-25 21:03:27

标签: c++

我目前正在尝试使用c ++创建Module类和Student类的简单实现。这些课程将包含特定模块和注册其中的个别学生。但是,每当我尝试创建Module或Student对象时,我似乎无法绕过此特定错误消息。

这可能是我错过的一些简单但我上传了我的标题和源文件。请帮忙,这让我发疯了。提前谢谢。

student.h:

#include "stdafx.h"
#include <string>

class Student {

public:
    Student(std::string, std::string, int);
    std::string getName() const { return name; }
    std::string getDegree() const { return degree; }
    int getLevel() const { return level; }

private:
    std::string name;
    std::string degree;
    int level;
};

module.cpp:

// student.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"

#include "module.h"
#include <vector>
#include <iostream>
#include <string>

using namespace std;

void Module::enrol_student(Student studentY) {

    students.push_back(studentY);
}

void Module::attendance_register() {

    string nameX;

    cout << "Attendance Register:\n" << endl;

    for (int i = 0; i < students.size(); i++) {
        Student studentX = students.at(i);
        nameX = studentX.getName();
        cout << nameX << endl;
    }
}

module.h中:

#include "stdafx.h"

#include "student.h"
#include <string>
#include <vector>

class Module {

public:
    Module(std::string, std::string, std::vector<Student>);
    std::string getModCode() { return modCode; }
    std::string getModTitle() { return modTitle; }
    void attendance_register();
    void enrol_student(Student);


private:
    std::string modCode;
    std::string modTitle;
    std::vector<Student> students;

};

testCode.cpp

// testCode.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"

int _tmain(int argc, _TCHAR* argv[])
{
    return 0;
}


#include "module.h"

#include <vector>
#include <iostream>
#include <string>

using namespace std;

int main() {

    //Initial Test Data
    Student student1("Arthur Smith", "Computer Science", 1);

    return 0;

}

1 个答案:

答案 0 :(得分:1)

您需要定义在类中声明的构造函数。在student.cpp中你需要这样的东西:

Student::Student(std::string name, std::string degree, int level) : name(name), degree(degree), level(level)
{
}

这将使用提供的值初始化成员。

类似于Module。