C++ 链接器错误 LNK 2019 函数中引用的未解析的外部符号
C++ Linker error LNK 2019 unresolved external symbol referenced in function
我正在尝试在文章之后实现一个智能类
https://www.codeproject.com/Articles/15351/Implementing-a-simple-smart-pointer-in-c
我有一个名为Person的类。
class Person
{
private:
char* name;
int age;
public:
Person();
Person(const char* pName, int pAge);
~Person();
void Display();
};
人.cpp
#include<iostream>
#include "Person.h"
Person::Person() : name(nullptr), age(0)
{}
Person::Person(const char* pName, int pAge)
{
name = new char[std::strlen(pName) + 1];
std::strcpy(name, pName);
age = pAge;
}
Person::~Person()
{}
void Person::Display()
{
std::cout << "Name is " << name << " and age is " << age << std::endl;
}
ReferenceCount.h
#pragma once
class ReferenceCount
{
private:
int count;
public:
ReferenceCount();
~ReferenceCount();
void AddRef();
void DelRef();
};
引用计数.cpp
#include "ReferenceCount.h"
ReferenceCount::ReferenceCount() : count(0)
{}
ReferenceCount::~ReferenceCount()
{}
void ReferenceCount::AddRef()
{
count++;
}
void ReferenceCount::DelRef()
{
count--;
}
智能类.h
#pragma once
#include "ReferenceCount.h"
template <typename T> class SmartClass
{
private:
T* pData;
ReferenceCount* rc;
public:
SmartClass();
SmartClass(T* data);
SmartClass(const SmartClass<T>& sp); // copy constructor
~SmartClass();
T& operator*();
T* operator->();
SmartClass<T>& operator=(const SmartClass<T>& sp); // copy assignment operator
};
智能类.cpp
#include "SmartClass.h"
template <typename T>
SmartClass<T>::SmartClass() : rc(0)
{
rc = new ReferenceCount();
rc->AddRef();
}
template <typename T>
SmartClass<T>::SmartClass(T* data) : pData(data), rc(0)
{
rc = new ReferenceCount();
rc->AddRef();
}
template<typename T>
SmartClass<T>::SmartClass(const SmartClass<T>& sp) // copy constructor
{
this->pData = sp.pData;
this->rc = sp.rc;
}
template <typename T>
SmartClass<T>::~SmartClass()
{
if (rc->DelRef() == 0)
{
delete pData;
delete rc;
}
}
template <typename T>
T& SmartClass<T>::operator*()
{
return *pdata;
}
template<typename T>
T* SmartClass<T>::operator->()
{
return pData;
}
template <typename T>
SmartClass<T>& SmartClass<T>::operator=(const SmartClass<T>& sp)
{
if (this != &sp)
{
if (rc->DelRef() == 0)
{
delete pData;
delete rc;
}
pData = sp.pData;
rc = sp.rc;
rc->AddRef();
}
return *this;
}
主.cpp
#include "Person.h"
#include "SmartClass.h"
int main()
{
SmartClass<Person> p(new Person("Scott", 25));
return 0;
}
当我使用 Visual Studio 2017 构建程序时,我遇到了以下链接器错误。
LNK2019未解析的外部符号"public: __thiscall SmartClass::SmartClass(class Person *("(??0?$SmartClass@VPerson@@@@QAE@PAVPerson@@@Z( 在函数_main中引用
LNK2019未解析的外部符号"public: __thiscall SmartClass::~SmartClass(void("(??1?$SmartClass@VPerson@@@@QAE@XZ( 在函数 _main 中引用
我在此代码中做错了什么?你能帮我纠正一下吗?
谢谢。
有两个构造函数,一个没有参数,另一个有两个参数。如果要调用第二个构造函数,则必须给出两个参数,即"Person *pt = new Person("Scott", 25("。
相关文章:
- C++:Application.cpp中抛出了未解析的外部符号(解决方案在问题的末尾,供未来的读者参考)
- 未解析的外部符号_MsiLocateComponentW@12.
- 在C++中使用 gRPC 时未解析的外部符号
- LibPrivoxy: 未解析的外部符号 __declspec(dllimport) int __stdcall Sta
- 尝试从 XamlApplication 编译 C++/WinRT 空白应用程序时,我收到未解析的外部符号 winrt_make_*
- 我收到错误LNK2001:未解析的外部符号(C++代码)
- 可视抽象类 c++(错误 LNK 2001:未解析的外部符号)
- 如何摆脱C++中未解析的外部符号"private: static char"错误?
- 当 lib 已添加到其他依赖项时,如何在 VS 中调试未解析的外部符号错误
- 仅在少数方法(静态或共享库)中解析的外部符号
- 未解析的外部符号"__declspec(dllimport)与 Spdlog c++ 库
- 函数 _main (OPENGL C++) 中引用的未解析的外部符号 ________
- 错误LNK2019未解析的外部符号"public: __thiscall SLinkList<char>::SLinkList<char>(void)"
- 使用静态 constexpr 成员的未解析外部符号
- 引入参数化构造函数后显示 LNK 2019 未解析外部符号的代码错误
- Dlib LNK2001未解析的外部符号USER_ERROR__consistent_build_configurati
- 矛盾的未解决的外部符号+未使用的库与VS2017和FFMPEG 4
- 链接器错误:切换到unicode生成给出:未解析的外部符号WinMain
- 错误 LNK2019:未解析的外部符号"外部"C"此错误是什么?
- 错误 : LNK2019: 未解析的外部符号"外部 "C"