C ++模板类型和模板类型

时间:2016-11-28 04:29:03

标签: c++ templates

如果我写这样的话,T的类型是什么:

template<typename T>
class AClass{
  private:
    T member;
  public:
    AClass(const T& value = T()) : member(value) {}
}; 

int main(){
  const char* n = "Hello";
  AClass<char*> a(n);
  return 0;
}

T是指char还是char上的指针?

感谢您的回答

2 个答案:

答案 0 :(得分:1)

事实:

考虑一下你的构造函数:

AClass(const T& value = T())

你想要的是指向const char的指针,即const char * 在您的构造函数中,您说Tconst,因此您要求const指针char,即char * const。 它们实际上是两种不同的野兽,编译器抱怨在构造函数中缺少const(让我说)在正确的位置。这是因为不允许从const char *转换为char *

答案 1 :(得分:0)

假设你打算写

AClass<char*> a('n');

Tchar*(地址),但'n'将解析为char。我不相信它会编译。