C++期望的主表达式错误

use*_*274 3 c++

当使用g ++编译以下代码时,我在'int''错误之前得到了'预期的primary-expression'.你知道为什么以及如何解决它吗?谢谢 !

 struct A
 {
     template <typename T>
     T bar() { T t; return t;}
 };

 struct B : A
 {
 };

 template <typename T>
 void foo(T  & t)
 {
     t.bar<int>();
 }

 int main()
 {
     B b;
     foo(b);
 }
Run Code Online (Sandbox Code Playgroud)

Sjo*_*erd 14

编译foo()函数时,编译器不知道bar是成员模板.你必须告诉它:

template <typename T>
void foo(T & t)
{
  t. template bar<int>(); // I hope I put template in the right position
}
Run Code Online (Sandbox Code Playgroud)

编译器认为bar只是一个成员变量,并且您尝试将其与某些内容进行比较,例如t.bar < 10.结果,它抱怨"int"不是表达.

  • 您应该通过单击空心检查接受此答案. (2认同)