如果我写这样的话,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
上的指针?
感谢您的回答
答案 0 :(得分:1)
事实:
T
在您的示例中为char *
考虑一下你的构造函数:
AClass(const T& value = T())
你想要的是指向const char
的指针,即const char *
在您的构造函数中,您说T
为const
,因此您要求const
指针char
,即char * const
。
它们实际上是两种不同的野兽,编译器抱怨在构造函数中缺少const
(让我说)在正确的位置。这是因为不允许从const char *
转换为char *
。
答案 1 :(得分:0)
假设你打算写
AClass<char*> a('n');
T
是char*
(地址),但'n'
将解析为char
。我不相信它会编译。