[英]char pointer to array conversions to char pointer to pointer
我有一个功能:
void add(char const**);
我将其调用如下:
template<typename T>
void anotherAdd(T const& t) {
add(&t);
}
...
anotherAdd("some string");
结果我得到了错误:
no known conversion for argument 1 from 'const char (*)[10]' to 'const char**'
为什么无法进行转换?
因为我认为以下是正确的:
"some string" <=> char const* =>
&"some string" <=> char const**
数组不是指针。
该代码需要一个指向指针的指针
void add(char const**);
编译器告诉您它无法产生指向指针的指针,因为您的代码没有指向的指针。 您正在有效地尝试评估&"some string"
,这没有任何有效含义。
该代码将起作用,因为它会创建您要尝试获取其地址的缺失char const*
。
template<typename T>
void anotherAdd(T const& t) {
char const *pt = &t; // Now there's a pointer that you can take the address of.
add(&pt);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.