错误:已定义类模板

Error: class template has already been defined

本文关键字:定义 错误      更新时间:2023-10-16

我有这个小模板类:

namespace emple {
    template <class LinkedClass> 
    class LinkedInList 
    {
    public:
        LinkedInList()
        { 
            active = false; 
        }
        ~LinkedInList(){}
        LinkedClass* getNext() const
        {
            return next;
        }
        void setNext(LinkedClass* const next_)
        {
            next = next_;
        }
        void setActive(bool state)
        {
            active = state; 
        }
        bool isActive()
        { 
            return active; 
        }
    private:
        LinkedClass* next;
        bool active;
    };
};

编译时出现此错误:

类模板已定义。

我做错了什么?

这是由包含相同头文件(包含此模板类)的乘法引起的。这通常C++通过使用防护来解决:

#ifndef EMPLE_H
#define EMPLE_H
// your template class
#endif

#pragma once s(我知道的每个编译器都支持),并且不那么混乱:

#pragma once
// your template class