草庐IT

void_type

全部标签

c++ - 理解 void* 对 intptr_t 和 uintptr_t

这是我正在测试的代码:intvalue=0;void*addyvoid=static_cast(&value);//C++-stylecast.它工作得很好,但我可以使用uintptr_t/intptr_t。但是正如人们所说的那样,它们并不适合用来指点here因为它们太大了。那么,这是真的吗?但是,如果是,使用void*保存指针会更好,但是会不会丢失数据? 最佳答案 intptr_t和uintptr_t的目的是,在某些应用程序中,您实际上确实需要对指针值进行某种数值计算,可能是通过翻转各个位,也许是XORing它们等。在这些情况下,

c++ - 添加虚拟删除错误 : type 'base' is not a direct base of derived class

考虑以下示例代码:#includeusingnamespacestd;classbase{public:base(){cout这给出了错误:error:type`base'isnotadirectbaseof`derived2'为什么会出现这个错误?如果我将基类设为虚拟,则错误不再存在。这是什么原因? 最佳答案 因为base不是derived2的直接基类。您必须为您的直接基础提供构造函数,在本例中为derived1。虚拟基地除外。它们总是在叶类中初始化,否则您可能会为同一个基类调用多个构造函数。因此,如果您使base成为虚拟的,您不

c++ - 为什么需要类型转换 (UINT)(void*)(DWORD)?

这个问题不太可能帮助任何future的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况相关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visitthehelpcenter.关闭9年前。这是MFC的CMap类中的默认HashKey函数。AFX_INLINEUINTAFXAPIHashKey(ARG_KEYkey){  //defaultidentityhash-worksformostprimitivevalues  return((UINT)(void*)(DWORD)key)>>4;}我的问题是为什么需要类型转换(DWORD)和(vo

C++ 错误 : Expected a type specifier

当我尝试像这样使用LoggerStream时,我得到“需要一个类型说明符”:constLoggerStreamlogger(L"测试组件");这是我尝试使用LoggerStream的地方:#include"Logger.h"#include"TestComponent.h"namespaceophRuntime{structTestComponent::TestComponentImpl{private:LoggerStreamlogger(L"TestComponent");NO_COPY_OR_ASSIGN(TestComponentImpl);};TestComponent::T

c++ - C++ : why does free not accept a const void*, 中的 malloc/free 有更好的方法吗?

这个问题在这里已经有了答案:UnabletofreeconstpointersinC(12个答案)关闭8年前。将C++11代码连接到某些C回调,我必须传递constchar*const*,即字符串数组。这是我的代码的简化版本:intmain(int,char**){constintcnt=10;constchar*const*names=static_cast(malloc(sizeof(char*)*cnt));//...allocatingnames[0],etc.comingsoon...the_c_function(names);free(names);return0;}所以我

java - 从 void 函数返回

假设一个类存在如下:classFoo{voiddo_after_something(){//somecodeherereturn;}voiddo_something(){//somecodeherereturndo_after_something();//returninganother(void)function}};JAVA显然反对上面这样的东西,BorlandC++编译器发出警告,MSVC++没有提示。我的问题是:从void函数返回在逻辑上(理论上)是否正确?returndo_after_something();相对于:do_after_something();return;或是

c++ - (void) 在 C++ 中是什么意思?

这个问题在这里已经有了答案:Whycastanunusedfunctionparametervaluetovoid?(2个答案)关闭7年前。我正在查看一些具有如下功能的代码:voidf(A*a,B&b,C*c){(void)a;(void)b;(void)c;}每行开头的(void)到底是做什么的?

c++ - 用户定义类型的 std::common_type 特征

自C++11以来,引入了类型特征std::common_type。std::common_type确定其所有模板参数之间的公共(public)类型。在C++14中,还引入了辅助类型std::common_type_t以缩短使用std::common_type类型特征的代码。std::common_type在重载算术运算符中特别有用,例如,templatestd::common_type_toperator+(T1const&t1,T2const&t2){returnt1+t2;}如果它的模板参数是内置类型(例如,int、double),它会工作得很好。但是,如果我将用户定义的类型作为模

c++ - 错误 LNK2019 未解析的外部符号 _WinMain@16 在函数 "int __cdecl invoke_main(void)"(?invoke_main@@YAHXZ) 中引用

这是我的剧本我不知道如何解决这个错误请帮我非常感谢floatangle=15;floatx,y,z;//forpolygonrotatevoiddisplay(){glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);//clearscreenanddepthbufferglLoadIdentity();glPushMatrix();glColor3f(1.0,0.0,0.0);glBegin(GL_POLYGON);glVertex2f(160.0,360.0);glVertex2f(300.0,360.0);glVertex2f(160.

c++ - 除了与内存分配相关的东西之外,void* 是否必要

除了C++中与内存分配相关的内容之外,void*是否必要?能举个例子吗? 最佳答案 记录内存地址如果你想使用iostreams输出一个指针(例如用于日志记录)然后通过void*是确保operator的唯一途径没有以某种疯狂的方式重载。#includestructfoo{};std::ostream&operator(ptr)测试iostream状态iostreams重载operatorvoid*作为状态检查,以便像if(stream)这样的语法或while(stream)是测试流状态的简便方法。模板元编程您可能想使用void*有时使