草庐IT

default_assignment

全部标签

c++ - 错误 [Pe513] : a value of type "void *" cannot be assigned to an entity of type "uint8_t *"

我正在尝试将C项目转换为C++。在C项目中,我在编译成C++时遇到了这个错误:Error[Pe513]:avalueoftype"void*"cannotbeassignedtoanentityoftype"uint8_t*"下面的代码给出了这个错误:#defineRAM32Boundary0x20007D00uint8_t*pNextRam;pNextRam=(void*)RAM32Boundary;//loadupthebaseram谁能解释一下这是在C中做什么以及如何将其转换为C++? 最佳答案 C允许与void*之间的隐式转

c++ - 匈牙利算法 : I'm having trouble with assigning as many jobs to workers as possible

我已经在C++中创建了匈牙利算法的实现。这种实现在很多情况下都非常有效。但是,在某些情况下,我的算法根本不起作用,因为我相信(并且确实如此)我对算法的一个步骤的实现是错误的。我的实现将数组X作为输入,运行算法的步骤并产生最终分配。该算法的步骤可以在维基上找到:HungarianAlgorithm在步骤3中,它具有以下成本数组(worker由行表示,作业由列表示)然后它说Initiallyassignasmanytasksaspossiblethendothefollowing但是我不明白什么是正确的实现。如何分配尽可能多的任务?选择会是随机的吗?然后如果选择是随机的,我可以选择第一个w

c++ - “Default member initializer needed within definition of enclosing class outside of member functions” - 我的代码格式不正确吗?

structfoo{structbar{~bar(){}//noerrorw/othisline};bar*data=nullptr;//noerrorw/othislinefoo()noexcept=default;//noerrorw/othisline};是的,我知道,还有一个题目完全相同,但有点不同的问题(涉及noexceptoperator和没有嵌套类型)。那里建议的解决方案(将foo的构造函数替换为foo()noexcept{})改变了语义,这里没有必要:这里我们有一个更好的答案(因此问题不是重复的)。编译器:AppleLLVM版本9.0.0(clang-900.0.37)

c++ - std::is_default_constructible<T> 错误,如果构造函数是私有(private)的

我有以下片段#include#includeclassC{C(){}};intmain(){static_assert(!boost::has_trivial_default_constructor::value,"Constructible");static_assert(!std::is_default_constructible::value,"Constructible");}条件不相等,但第一个条件工作正常,第二个构造给出错误,构造函数是私有(private)的。编译器gcc4.7...那么,这是gcc错误,还是由标准定义的?http://liveworkspace.org/

C++ [[gnu::visibility ("default")]] 与 Windows 和 Linux 上的 __declspec(dllexport)

我需要用C++创建一些共享库,我使用linux作为我的开发者操作系统。我知道如果我想通过dlsym/LoadLibrary加载它们,我需要让符号可见。所以在Linux中,我所有的符号都遵循这种模式:extern"C"[[gnu::visibility("default")]]voidf();我在启用C++11的情况下使用了clang,并且能够在我的主机程序中加载f。当我转移到Windows时,我使用启用了C++11的GCC4.8.2,并且该模式在Windows机器上也适用于LoadLibrary。(我需要使用C++11来实现新的属性语法)。我知道在Windows上我需要使用__decl

c++ - 在调用 vector::assign() 之前调用 vector::reserve() 会更好吗?

我知道使用“reserve”以避免不必要的重新分配是一种很好的做法(EffectiveSTL的第14项):std::vectorv1;v1.reserve(1000);for(inti=0;i当您调用assign时是否适用相同的规则?std::vectorv2;//v2.reserve(v1.size());//Bettertodothis?v2.assign(v1.begin(),v1.end()); 最佳答案 如果v1是std::vector你真的不需要它,因为编译器/STL知道在v2(并且将在复制实际数据之前保留本身所需的数量

c++ - 在 =delete 的含义中使用 =default

下面的代码编译的很好:structB{B(int){}};structD:B{D()=default;};直到我必须创建类D的实例:Dd;//error:useofdeletedfunction'D::D()'是否有任何理由(用例)允许D的构造函数使用=default,而实际上它的工作原理是=delete;? 最佳答案 g++在错误中给出了很好的解释:bla.cpp:6:5:note:‘D::D()’isimplicitlydeletedbecausethedefaultdefinitionwouldbeill-formed:D()

c++ - 为什么我不能将 =default 用于带有成员初始值设定项列表的默认 ctors

考虑以下类:classFoo{inta,b;public:Foo():a{1},b{2}{}//Defaultctorwithmemberinitializerlist//Foo():a{1},b{2}=default;//Doesnotworkbutwhy?};(编辑:因为在几个答案中提到了它-我知道类内成员初始化器,但这不是这里的重点)我认为第二个ctor定义会更优雅并且更适合现代C++代码(另请参见whyyoushoulduse=defaultifyouhavetobeexplicitaboutusingthedefaultsemantics)。但是,似乎没有通用编译器接受它。c

c++ - 错误 : cannot convert 'const wchar_t [13]' to 'LPCSTR {aka const char*}' in assignment

//includethebasicwindowsheaderfile#include#include//theWindowProcfunctionprototypeLRESULTCALLBACKWindowProc(HWNDhWnd,UINTmessage,WPARAMwParam,LPARAMlParam);//theentrypointforanyWindowsprogramintWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPSTRlpCmdLine,intnCmdShow){//thehandleforthew

c++ - C++ 是否为纯虚拟类创建默认值 "Constructor/Destructor/Copy Constructor/Copy assignment operator"?

C++编译器是否为这个“类”生成默认函数,如Constructor/Destructor/Copy-Constructor...?classIMyInterface{virtualvoidMyInterfaceFunction()=0;}我的意思是不可能实例化这个“类”,所以我认为没有生成默认函数。否则,人们会说您必须使用虚拟析构函数。这意味着如果我不定义析构函数virtual它将默认创建,而不是virtual。此外,我想知道为纯虚拟接口(interface)定义虚拟析构函数是否合理,如上所示?(所以这里没有使用指针或数据,所以不需要破坏任何东西)谢谢。 最