【发布时间】:2015-08-26 10:59:07
【问题描述】:
typedef void* TVPtr;
typedef const void* CTVPtr;
const TVPtr func3 (const TVPtr p)
{
return p;
}
const void* func4 (const void* p)
{
return p;
}
CTVPtr func5 (CTVPtr p)
{
return p;
}
int main ()
{
const uint64_t i = 10;
func3(&i); // compilation error here
// cannot convert argument 1 from 'const uint64_t *'
// to 'const TVPtr' Conversion loses qualifiers
func4(&i); // no compilation error
func5(&i); // no compilation error
return 0;
}
我不明白为什么有错误是一种情况而不是其他两种情况?
【问题讨论】:
-
这将是您永远不应将指针隐藏在 typedef 后面的众多原因之一。