首页 > 解决方案 > LNK2019 - 未解决的外部符号错误

问题描述

编译我的主类时遇到问题。

//main.cpp    
#include "Division.h"

int main() {
    Division Root;
}

这是我的 Division.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 对象。为什么我收到链接器错误?我究竟做错了什么?

标签: c++linkerlnk2019

解决方案


您已经在头文件和 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;
}

为成员变量使用其他名称而不是参数也很好。


推荐阅读