错误:类模板已经定义 [英] Error: class template has already been defined

查看:52
本文介绍了错误:类模板已经定义的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有这个小模板类:

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++ 中通过使用守卫来解决:

This is caused by multiply including the same header file (which contains this template class). This is typically solved in C++ by either using guards:

#ifndef EMPLE_H
#define EMPLE_H

// your template class

#endif

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

or #pragma onces (which are supported by every compiler I know) and are less cluttering:

#pragma once

// your template class

这篇关于错误:类模板已经定义的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆