问题描述
编译主类时遇到问题。
//main.cpp
#include "Division.h"
int main() {
Division Root;
}
这是我的部门。h
//Division.h
#pragma once
#include <string>
#include <windows.h>
class Division {
public:
Division();
Division(std::string Name,std::string PhoneNumber,std::string Description,Division& Parent);
private:
UUID GUID;
std::string Name;
std::string PhoneNumber;
std::string Description;
Division* Parent;
};
这是我的Division.cpp
#include <string>
#include <windows.h>
using namespace std;
class Division {
public:
Division() {};
Division(string Name,string PhoneNumber,string Description,Division &Parent) {
UuidCreate(&GUID);
this->Name = Name;
this->PhoneNumber = PhoneNumber;
this->Description = Description;
this->Parent = &Parent;
}
private:
UUID GUID;
string Name;
string PhoneNumber;
string Description;
Division* Parent;
};
在主类中,我只想使用第一个构造函数创建一个空的Division对象。 为什么会出现链接器错误?我在做什么错了?
解决方法
您已经在头文件和cpp文件中两次声明了Division。
您应该只在标题中声明。
.cpp文件中包含标题并定义方法
Division::Division() {}
Division::Division(std::string name,std::string phoneNumber,std::string description,Division &parent) {
UuidCreate(&GUID);
Name = name;
PhoneNumber = phoneNumber;
Description = description;
Parent = &parent;
}
对于成员变量使用除参数之外的其他名称也很好。