2013-06-13 94 views
0

即时STUDING在C++的模板,并根据这个教程:http://www.cprogramming.com/tutorial/templates.htmlC++模板类编译错误:预期的init声明符之前 '<' 令牌

我提出的类CalcTempl.h

#ifndef CALC_TEMPL_H 
#define CALC_TEMPL_H 

template <class A_Type> class CalcTempl 
{ 
    public: 
    A_Type multiply(A_Type x, A_Type y); 
    A_Type add(A_Type x, A_Type y); 
}; 

template <class A_Type> A_Type calc<A_Type>::multiply(A_Type x,A_Type y) 
{ 
    return x*y; 
} 
template <class A_Type> A_Type calc<A_Type>::add(A_Type x, A_Type y) 
{ 
    return x+y; 
} 

#endif 

和的main.cpp

#include <iostream> 
#include "CalcTempl.h" 

using namespace std; 

int main(){ 

    CalcTempl<double> c2; 

    double d1 = 5; 
    double d2 = 4; 

    double c2r1 = c2.add(d1, d2); 

    cout << " C2 Result: " << c2r1 << "\n"; 

    return 0; 
} 

上编译(克++ main.cpp中-o t检验)我得到这个错误:

CalcTempl.h:11: error: expected init-declarator before '<' token 
CalcTempl.h:11: error: expected `;' before '<' token 
CalcTempl.h:15: error: expected init-declarator before '<' token 
CalcTempl.h:15: error: expected `;' before '<' token 

我不能发现什么是错的

回答

2

你的类被称为CalcTempl,但在这里你实现它的成员的时候,你试着将它称为calc。这是行不通的。

+0

谢谢,多么愚蠢的错误!我认为编译器的输出让我走错了路。 – user2479113

+0

是的,模板错误可能会造成混淆。尝试使用Clang而不是GCC,它通常具有更好的错误消息。或者将你的GCC升级到4.8,这也有很大的改进。顺便说一句,如果答案解决了您的问题,请点击表决下方的勾号将其标记为已接受。 –

+0

@SebastianRedl你能解释一下init-declarator是什么意思吗? –

相关问题