C++模板 - 错误:令牌之前的预期初始值设定项'<'

C++ template - error: expected initializer before '<' token

本文关键字:lt 错误 模板 令牌 C++      更新时间:2023-10-16

我正在尝试了解模板,我希望我的类对能够容纳任何类型的两个对象。我现在只想为obj1提供一个访问器函数。但当我试图编译时,我得到了以下错误:

error: expected initializer before '<' token
    T1 pair<T1,T2>::getObj1()

我的代码是:

#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
template <class T1, class T2>
class pair
{
  public:
    pair(const T1& t1, const T2& t2) : obj1(t1), obj2(t2){};
    T1 getObj1();
  private:
    T1 obj1;
    T2 obj2;
};
template <class T1, class T2>
T1 pair<T1,T2>::getObj1()
{
    return obj1;
}

int main()
{
    return 0;
}

对是标准类的名称,和using namespace std发生冲突。

几种解决方案:

  • 将你的类重命名为其他类
  • 不要使用using语句