我在编写程序时遇到一个奇怪的错误:
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
答案 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