【发布时间】:2020-01-26 11:23:46
【问题描述】:
我试图从书中解决一个练习,但我在 static_cast 上失败了。我使用了 cstdlib 中的 qsort 方法。我必须将函数的参数转换为 C-String (const char*)。但我总是收到错误消息:stattic_cast from type 'const void*' to type 'const char**' casts away qualifiers。
int scmp(const void *s1, const void *s2) {
const char *c1 = (static_cast<const char**>(s1));
const char *c2 = (static_cast<const char**>(s2));
....
}
const char *sfield[] = {"one", "two", "three", "four", "five"};
qsort(sfield, 10, 4, scmp);
解决方法如下
const char *c1 = *(static_cast<const char* const*>(s1));
最后一个 const 的原因是什么,它来自哪里?为什么我必须强制转换为指向 constant 指向 char const 的指针?
【问题讨论】:
标签: c++ constants static-cast