Casting a const void*
Casting a const void*
我具有返回const void*
的函数,我想将其信息用作char*
。我可以将其施加为C-Style file作为(char *)variable
,但是当我尝试使用reinterpret_cast
(例如reinterpret_cast<char *>(variable)
(时,我会收到汇编错误。
我应该使用其他铸造方法吗?
const void *p;
void *q = const_cast<void *>(p);
char *r = static_cast<char *>(q);
第一个演员将摆脱const并产生void *
第二个演员更改数据类型并产生char *
在此处阅读有关不同的C 铸造
reinterpret_cast<const char*>(variable)
或,如果您真的确定您可以忽略const
预选赛,则const_cast<char*>(reinterpret_cast<const char*>(variable))
。
使用reinterpret_cast<char*>()
进行简单类型不是一个好主意。使用const char *new_variable = static_cast<const char*>(variable)
。
删除const
也是一个坏主意。如果您确定返回的内存是可写的,则可以使用const_cast<char*>(new_variable)
。
相关文章:
- 为什么这个函数将"const char*"转换为"void* const"而不是"const void*"
- 从"const void*"到"PVOID {aka void*}"[-fall
- 将返回类型专用化为 void 或 const 左值引用
- 不能使这种类型的"void(C::* volatile)(int) const "在参考手册C++示
- 错误:对类型 'const ItemInstance' 的引用无法绑定到类型 'void' 的右值
- 错误:从'void*'到'const uint8_t* {aka const unsigned char*}'的转换无效 [-允许]
- template<class T, int N> void h(T const(&)[N]); as friend function
- 'void (*)(const char*)' 'void (*)()' [-允许]
- 从 'void *' 转换为 'const std::string *&' 必须具有所有中间指针 const 合格
- Python ctypes and void const pointers
- Casting a const void*
- SFML 和 Box2D SetUserData 无法将参数从 const char [4] 转换为 void *
- 警告:'virtual void wxWindowBase::SetInitialBaseSize(const wxSize&)'已弃用
- typedef void (*print_type) (const char*);
- :void setData(const Color * & data_ptr)中的 *& 是什么意思;
- 将所有权从 unique_ptr<T,void(*)(T*)> 转移到 unique_ptr<const T,void(*)(const T*>
- 使用 LLVM 从 const void * 转换为模板类型时出现问题
- 将 std::function 作为参数传递,const void *
- 了解 void f(const T¶m) 中的参数类型
- CA::release_objects(X::List<void const*>*)