本文主要是介绍qt4.8.7编译中出现const void* 禁止转换为void *,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
编译错误
- 错误忘截图,大概是如下头文件的问题:
- 该文件中的这一段函数报了如图所示的错误:
// Test and set for pointerstemplate <typename T>
Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetOrdered(T *expectedValue, T *newValue)
{union { T * volatile * typed; void * volatile * voidp; } pointer;pointer.typed = &_q_value;return QBasicAtomicPointer_testAndSetOrdered(pointer.voidp, expectedValue, newValue);`
}
- 其中这段函数
QBasicAtomicPointer_testAndSetOrdered(pointer.voidp, expectedValue, newValue)
的原型为: Q_CORE_EXPORT bool QBasicAtomicPointer_testAndSetOrdered(void * volatile *, void *, void *);
- 所以只用添加一个强制类型转换就可以了。
解决方法
- 修改上述函数如下所示:
// Test and set for pointerstemplate <typename T>
Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetOrdered(T *expectedValue, T *newValue)
{union { T * volatile * typed; void * volatile * voidp; } pointer;pointer.typed = &_q_value;return QBasicAtomicPointer_testAndSetOrdered(pointer.voidp, (void*)expectedValue, (void*)newValue);
}
后记
- 查看qt最新源码,发现这里果然是一个bug,修改方法和本文一致。
这篇关于qt4.8.7编译中出现const void* 禁止转换为void *的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!