草庐IT

make_new_type

全部标签

c++ - "' void* ' is not a pointer-to-object type"在没有 void* 的代码中?

我的代码有问题。在Xcode或使用C++11编译器中,此代码运行良好。但是,当我将此代码提交给在线法官时,判决显示“编译错误”。我认为他们使用的是C++4.7.1编译器,当我尝试编译它(使用Ideone)时,它说:prog.cpp:Infunction'voidprintArray(int)':prog.cpp:27:error:'void*'isnotapointer-to-objecttypeprog.cpp:27:error:'void*'isnotapointer-to-objecttypeprog.cpp:27:error:'void*'isnotapointer-to-ob

c++ - "missing type specifier"构造函数声明错误

我在2个不同的文件中有2个类:正则矩阵.h:#ifndef_RM_H#define_RM_H#include"SparseMatrix.h"...classRegMatrix{...RegMatrix(constSparseMatrix&s){...}//ctor...};#endif稀疏矩阵.h:#ifndef_SM_H#define_SM_H#include"RegMatrix.h"...classSparseMatrix{...SparseMatrix(constRegMatrix&r){...}//ctor...};#endif在构造函数行上我得到了错误:错误C4430:缺少类

c++ - 使用 new 创建一个结构数组

我在这里遇到了一些困难的情况,我希望有人能帮助我。我有以下内容,structCandyBar{std::stringname;doubleweight;intcalories;};现在,创建一个包含许多CandyBar的结构数组非常简单,我已经这样做了;intmain(){CandyBarbars[]={{"Mangotart",2.3,100},{"YoYo",3.2,130},{"OrangeBall",1.7,98}};return0;}但是,现在我想使用new创建相同的结构。当我想到它时它非常简单,但是它崩溃并且不起作用。CandyBar*bars=newCandyBar;(*

c++ - 错误 :incompatible types in assignment of 'const char[5]' to 'char[10]'

我已经将c定义为charc[][10]在函数定义中并像c[i]="gray";一样使用它怎么了?我在网上搜索,它显示相同的语法。谢谢。 最佳答案 您不能对数组使用赋值(=)。如果将c更改为指针数组,这可能会起作用,具体取决于您需要使用它做什么。constchar*c[20];c[i]="gray";或者如果声明的类型必须是数组的数组,您可以使用strncpy:charc[20][10];strncpy(c[i],"gray",sizeof(c[i])); 关于c++-错误:incompa

c++ - new[] 比 Win32 的 VirtualAlloc 快吗?

我正在测试一些字符串池分配器的性能:我考虑了提供的那个here调用VirtualAlloc然后分割出子分配,以及使用标准C++(不直接调用任何Win32API)和new[]的类似实现。我希望VirtualAlloc版本更快,因为我认为开销应该比C++new[]少;但我观察到的结果恰恰相反:使用new[]似乎比使用较低级别的VirtualAlloc产生更快的代码。我跑了几次测试(代码是用VS2010SP1编译的),输出是这样的:StringpoolusingVirtualAlloc:1280.07msStringpoolusingnew[]:799.193ms这是为什么?为什么new[]

c++ - 将使用 "new"分配的内存传递给 C 库是否安全?

我知道newdelete与mallocfree不兼容。这是否意味着我应该避免对将由C库使用的内存使用new?当我将内存传递给C库时,使用new而不是malloc会出现什么问题?voidfunc(){int*p=newint(42);//ShouldIinsistonusingmallocforpifthisfunctionisapart//ofaClibrary?lib_func(p);} 最佳答案 内存就是内存,怎么分配都无所谓。只要您将new与delete、new[]与delete[]以及malloc/calloc和free(还

c++ - delete[] 提供了修改后的 new-ed 指针。未定义的行为?

我在同行代码审查session期间看到了如下代码:char*s=newchar[3];*s++='a';*s++='b';*s++='\0';delete[]s;//thismayormaynotcrashonsomeoranyday!!首先,我知道在标准C++中,指向数组大小的后一位是可以的。尽管访问它会导致未定义的行为。所以我相信最后一行*s++='\0'没问题。但如果我没记错的话,C++标准要求delete应该提供与new返回的指针相同的指针。我相信这意味着返回的指针不能被篡改。我猜这是因为new可能会在delete可能使用的返回地址之前保留一些内务管理信息。移动new的指针可能

c++ - 错误 : Variable length array of Non-POD element type 'string'

在开始之前,我必须首先声明,我已经研究过针对此错误的可能解决方案。不幸的是,它们都与不使用数组有关,这是我项目的要求。另外,我目前正在学习CS入门类(class),所以我的经验几乎没有。数组的用途是从文件中收集名称。因此,为了初始化数组,我计算了名称的数量并将其用作大小。问题是标题中所述的错误,但我仍然使用一维数组时看不到解决方法。主要.cpp#include#include#include#include#include#include"HomeworkGradeAnalysis.h"usingnamespacestd;intmain(){ifstreaminfile;ofstrea

c++ - std::make_pair 与 c++ 11

您好,我有以下代码:boolPinManager::insertPin(conststd::string&p_pinNumber,conststd::string&p_mode){boost::shared_ptrpin(newGPIOPin(p_pinNumber,p_mode));if(pin){m_pinsInUse.insert(std::make_pair>(p_pinNumber,pin));returntrue;}returnfalse;}此代码始终编译,但当我添加-std=c++0x标志时,此代码无法编译并显示消息:[42%]BuildingCXXobjectgpioa

c++ - 分配给 new 的内存是否会自动释放?

我99%确定答案是盲目的否。请验证我的以下代码会产生内存泄漏的命题。Data&getData(){Data*i=newData();return*i;}voidexampleFunc(){Datad1=getData();Datad2;/*d1isnotdeallocatedbecauseitisontheheap,andd2is*becauseitisonthestack.*/}请注意,这是一个过于简化的示例,很明显您实际上不会使用上面的代码...因此无需指出这一点,谢谢。更新1:除此之外,如果我将指针分配给一个引用会怎么样?在这种情况下,我假设数据未被复制...Data&getDa