gpt4 book ai didi

c++ - 使用 std::auto_ptr 时出现错误 LNK2019

转载 作者:行者123 更新时间:2023-11-28 03:31:11 25 4
gpt4 key购买 nike

我有一个名为 FiniteStateMachine 的类声明如下

头文件:FiniteStateMachine.h

class FiniteStateMachine
{
public:
//Constructor
FiniteStateMachine();

//Destructor
~FiniteStateMachine();
}

源文件:FiniteStateMachine.cpp

////////////////////////////////////////////////////////////////////////
// Constructor
////////////////////////////////////////////////////////////////////////
FiniteStateMachine::FiniteStateMachine()
:m_InitialState("")
,m_CurrentState(NULL)
,m_Running(false)
{
RegisterBaseTypes();
}

////////////////////////////////////////////////////////////////////////
// Destructor
////////////////////////////////////////////////////////////////////////
FiniteStateMachine::~FiniteStateMachine()
{
if (m_Running) Stop();
Clear();
}

我有一个名为 FSM 的头文件,我在其中收集了所有类的项目

FSM.H

class ICORE_API FiniteStateMachine;

好的,我编译它,现在想在另一个库中使用这个类。

有关链接该库的所有事情都已完成。

在客户端类中,当我将 FiniteStateMachine 与 auto_ptr 一起使用时,出现链接器错误:

#include "FSM.H"

std::auto_ptr<FiniteStateMachine > fsm;

error LNK2019: unresolved external symbol "public: __thiscall IFSM::FiniteStateMachine::~FiniteStateMachine(void)" (??1FiniteStateMachine@IFSM@@QAE@XZ) referenced in function "public: void * __thiscall FSM::FiniteStateMachine::`scalar deleting destructor'(unsigned int)" (??_GFiniteStateMachine@IFSM@@QAEPAXI@Z)

但是通过这样的声明

#include FSM.h

FiniteStateMachine* fsm;

一切正常,项目已完全编译。

现在我想知道为什么会这样?这里有什么问题。

最佳答案

std::auto_ptr<>生成调用 FiniteStateMachine 的代码的析构函数,在您的情况下您不提供它,因为您仅通过提供前向声明来提供。

关于c++ - 使用 std::auto_ptr 时出现错误 LNK2019,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12587691/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com