缺少';'之前'模板<'

时间:2013-04-18 20:32:36

标签: c++ visual-studio-2010 templates header-files

我在编写程序时遇到一个奇怪的错误:

Error 1 error C2143: syntax error : missing ';' before ''template<''

我做的一切都很标准;没什么特别的:

#ifndef HEAP_H
#define HEAP_H
//**************************************************************************
template<typename TYPE>
class Heap
{
    private:
        TYPE* heapData;
        int currSize;
        int capacity;
        void _siftUp(int);
        void _siftDown(int);
        int _leftChildOf(int) const;
        int _parentOf(int) const;

    public:
        Heap(int c = 100);
        ~Heap();
        bool viewMax(TYPE&) const;
        int getCapacity() const;
        int getCurrSize() const;
        bool insert(const TYPE&);
        bool remove(TYPE&);
};

不太确定是什么问题。我尝试关闭并重新打开我的程序 - 没有运气。使用Visual Studio 2010

1 个答案:

答案 0 :(得分:11)

这个错误可能有点误导。

;template<之前出现并不一定非常重要。

实际预期; 之后 <{>}之前发生的

此示例显示了这种情况如何发生。

档案template<

header.h

档案class MyClass { }

heap.h

档案#ifndef HEAP_H #define HEAP_H //************************************************************************** template<typename TYPE> class Heap { }; #endif

main.cpp

修改

此编译器错误导致您输入错误文件的原因是编译之前的,预处理器会将#include "header.h" #include "heap.h" int main() { } 处理为此单个字符流。

main.cpp