相关疑难解决方法(0)

当模板参数名称与内部类名匹配时,为什么编译失败?

以下编译完全正常:

struct MyClass {
  template<typename SameName>
  void foo (SameName* p);
};
struct SameName {};

template<class SameName>
void MyClass::foo (SameName* p) {}
Run Code Online (Sandbox Code Playgroud)

但是,如果我们附上MyClassSameName一些内class Outertemplate外定义的函数,编译失败.

struct Outer {
  /* paste here `MyClass` & `SameName` from above */
};

template<class SameName>
void Outer::MyClass::foo (SameName* p) {}  // <--- error here
//   ^^^^^
Run Code Online (Sandbox Code Playgroud)

克++(03-14)误差是怪异:

error: prototype for ‘void Outer::MyClass::foo(Outer::SameName*)’ does not match any in class ‘Outer::MyClass’
 void Outer::MyClass::foo (SameName* p) {}
      ^~~~~
templateClassMethod.cpp:6:10: error: …
Run Code Online (Sandbox Code Playgroud)

c++ syntax templates compiler-errors class-method

5
推荐指数
0
解决办法
209
查看次数

标签 统计

c++ ×1

class-method ×1

compiler-errors ×1

syntax ×1

templates ×1