草庐IT

void_type

全部标签

c++ - 在 C++ 中放松 void * 转换

在C中,将指针转换为void*不是错误。移植到C++的一个主要障碍是在从处理通用指针的函数返回时需要转换指针,例如malloc,以及在我自己的代码中声明的函数,例如void*block_get(Blknoconstblkno);.然而,我的代码旨在由C和C++编译器成功编译。如果我为了C++的缘故在任何地方都提供显式强制转换,它们必须是C风格的强制转换,并且我可能会屏蔽由于将非指针类型与两种语言的指针类型进行强制转换而产生的错误。我的引用错误如下:structCpfs*cpfs=calloc(1,sizeof(*cpfs));在MSVC中生成:Error2errorC2440:'ini

c++ - 错误 : has initializer but incomplete type

我遇到了问题:在使用结构时有初始化器但类型不完整:在hpp文件中:classA{private:structvideoDT;};在一个cpp文件中:structA::videoDT{videoDT(intb):a(b){}inta;};voidtest(){structvideoDTtest(1);}那么问题来了:错误:有初始化器但类型不完整提前致谢 最佳答案 我认为问题在于test()无法访问A的私有(private)类型。这为我编译:classA{private:friendvoidtest();structvideoDT;};

c++ - 语句 “(void)startGuardBegin;” 的作用是什么?

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Whatdoes“(void)new”meaninC++?我不熟悉C++,我不理解方法签名后面的那一行:intEAN13Reader::decodeMiddle(Refrow,intstartGuardBegin,intstartGuardEnd,std::string&resultString){(void)startGuardBegin;...}(void)startGuardBegin;是什么?方法调用?

c++ - 错误消息 : 'value_type' : is not a member of

我不明白这个神秘的错误消息,但我得到了30个`'value_type':isnotamemberof'TextFileLineBuffer'`当我在VC++6中编译以下代码时,//***行未注释。当然,如果我把它注释掉,它编译得很好。我想我在过去的两个小时里尝试了各种尝试,但都没有成功。任何提示将不胜感激。#include#include#include#include#include#include//wrapperforastringlinestructTextLine{std::stringm_sLineContent;operatorstd::stringconst&()con

c++ - 错误 : variable or field ‘myfunction’ declared void

这个问题在这里已经有了答案:variableorfielddeclaredvoid(6个答案)关闭7年前。在下文中,我没有定义类型doesntexist。voidmyfunction(doesntexistargument){}GCC4.7.2说“error:variableorfield‘myfunction’declaredvoid”我的问题是:编译器在这里指代函数名称为void而不是参数类型是怎么想的?[编辑]在投票之前,请注意这个问题的答案与错误的顺序和-Wfatal-errors停止打印更直接相关的消息有关。这不仅仅是我在尝试一个稍微模糊的编译器消息。

c++ - make_signed<unsigned long>::type 是 int?

我使用的是VisualStudio2010,下面的代码让我有些困惑:#includeautox=std::make_signed::type();x将是int类型,但我预计会很长。我知道VS10中的int和long都是4字节整数。但是即使一个signedlong装进一个int,int对我来说也不是unsignedlong对应的signedinteger类型。所以我的问题是:这是错误/技术错误还是标准规范允许这种结果? 最佳答案 C++1120.9.7.3[meta.trans.sign]描述了make_signed:IfTnames

c++ - LNK1112 : module machine type 'x64' conflicts with target machine type 'X86' : Qt creator

我有一个在linux上运行的应用程序,我正试图将其导入到windows上。我已经设置了所有库并对.pro文件进行了更改。现在,当我尝试构建项目时出现此错误:error:LNK1112:modulemachinetype'x64'conflictswithtargetmachinetype'X86'我不确定是什么导致了这个问题。我正在使用32位Qtcreator。我知道有几个链接讨论了更改项目属性,但所有这些都与在VisualStudio中更改它们有关。我正在使用Qtcreator并通过QtUI运行项目。所以我不确定如果必须解决这个问题,必须通过Qt对项目属性进行哪些更改。

C++ 调试窗口显示“<incomplete type> for string variable

据我所知,我正在以一种相当正常的方式初始化一个字符串,当我调试时,我的IDE(CLion)中的变量窗口将其值显示为.我有一些简单的代码导致字符串变量Bob出现问题.#includeintmain(){std::stringBob="thisdoesn'tshowupinthevariableswindow";std::cout我不知道它有什么影响,但我会包含CMakeLists文件,它似乎是我可以使用的最简单的文件。cmake_minimum_required(VERSION3.8)project(testing123)set(CMAKE_CXX_FLAGS"${CMAKE_CXX_F

c++ - 为 void 类型部分特化参数包参数的语法是什么?

我找不到让这个工作的方法。有可能吗?我不明白为什么不会。templatestructFieldTypeById{usingType=int;};templatestructFieldTypeById{usingType=void;};intmain(){usingt1=FieldTypeById::Type;usingt2=FieldTypeById::Type;return0;}https://godbolt.org/z/AggnDq 最佳答案 您示例中的问题不是特化,这很好。问题是FieldTypeById无法推断类型First

c++ - 迭代器模式 - 错误 C2679 : binary '<<' : no operator found which takes a right-hand operand of type 'std::string'

这个问题在这里已经有了答案:errorC2679:binary'(1个回答)关闭5年前。我正在尝试使用迭代器模式进行迭代和打印,但出现错误这里是错误:errorC2679:binary'couldbe'std::basic_ostream&std::operator>(std::basic_ostream&,constchar*)'这是错误的来源std::coutgetName();#ifndef_ROBOT1_#define_ROBOT1_namespaceguitars{namespaceComposite{namespaceInventoryParts{usingnamespac