c ++模板成员功能“找不到标识符”

时间:2017-02-20 10:02:45

标签: c++

当我在VS2015上编译此代码时,我收到以下错误

错误C3861 'Shutdown': identifier not found

template<class T, class... ARG>
class __declspec(dllexport) ThreadManager
{

public:
    void ShutDown();
    ~ThreadManager();
};

template<class T, class... ARG>
void ThreadManager<T, ARG...>::ShutDown()
{
    //do stuff
}

错误在此代码中

template<class T, class... ARG>
ThreadManager<T, ARG...>::~ThreadManager()
{
    if (isRunning)
        Shutdown();
}

如果我将其更改为

template<class T, class... ARG>
ThreadManager<T, ARG...>::~ThreadManager()
{
    if (isRunning)
        this->Shutdown();
}

我收到错误C2039 'Shutdown': is not a member of 'ThreadManager'

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:1)

案件问题。您在声明中使用驼峰大小写ShutDown,但在析构函数中使用Shutdown

答案 1 :(得分:1)

当编译器发出错误时,表示错误。 函数名称为ShutDown。

答案 2 :(得分:1)

您的方法名称为ShutDown(),但您正在调用shutdown()