LNK2019-未解决的外部符号错误

问题描述

编译主类时遇到问题。

//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;
}

对于成员变量使用除参数之外的其他名称也很好。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...