草庐IT

Initialization

全部标签

c++ - 在没有默认构造函数的情况下初始化类

如果我有一个类A,只有一个复制构造函数和一个带有参数int和int的构造函数,我将那个类放在里面类B:classB{public:B();privateAa;}如何在B的构造函数中初始化a?我试过a(0,0),a=A(0,0),但不出所料,我收到了一个error:nomatchingfunctionforcallto‘A::A()’ 最佳答案 在B的构造函数中,你会做这样的事情:B::B():a(0,0){//ctorhere} 关于c++-在没有默认构造函数的情况下初始化类,我们在St

c++ - 如何使用初始化列表 C++ 初始化数组

我有一个与C++数组和结构相关的问题。我有一个结构:structnpc_next_best_spot{npc_next_best_spot():x({0}),y({0}),value(-1),k(0),i({0}),triple_ress({0}),triple_number({0}),bigI(0){}intx[3];inty[3];doublevalue;intk;inti[3];inttriple_ress[3];inttriple_number[3];intbigI;};但这给出了警告"list-initializerfornon-classtypemustnotbeparen

c++ - C++ 中的 int x=1 和 int x(1) 有什么区别?

这个问题在这里已经有了答案:关闭13年前。PossibleDuplicate:IsthereadifferenceinC++betweencopyinitializationandassignmentinitialization?我是C++新手,很少看到有人用这种语法来声明和初始化一个变量:intx(1);我试过了,编译器没有报错,输出结果和intx=1一样,它们真的是一回事吗?非常感谢大家。

C++ - 数组的初始值设定项太多

我做了一个这样的数组,但它一直说我有太多的初始化程序。我该如何解决这个错误?intpeople[6][9]={{0,0,0,0,0,0},{0,0,0,0,0,0},{0,0,0,0,0,0},{0,0,0,0,0,0},{0,0,0,0,0,0},{0,0,0,0,0,0},{0,0,0,0,0,0},{0,0,0,0,0,0},{0,0,0,0,0,0}}; 最佳答案 这里的问题是您在数组声明部分交换了行/列索引,因此编译器感到困惑。通常在声明多维数组时,第一个索引用于行,第二个用于列。这个表单应该修复它:intpeople[9

c++ - 此类代码中 gcc 和 clang 之间的不同行为

intmain(){std::vectordelimiters={",",";"};std::cout我在gcc和clang之间得到不同的答案clang7.0.0打印出来,gcc8.2.0报错terminatecalledafterthrowinganinstanceof'std::length_error'what():cannotcreatestd::vectorlargerthanmax_size()Aborted哪个编译器是正确的? 最佳答案 两个编译器都是正确的,因为你的代码有未定义的行为。你掉进了陷阱。{",",";"}

c++ - 开关盒 : declaration-with-initialization & declaration-and-then-assignment

在switch-case语句中,declaration-with-initialization是无效的,但允许declaration-and-then-assignment。如以下代码片段所示。从编译器端看,这两种类型的初始化有什么区别?以及为什么第一种初始化无效而第二种初始化有效。switch(val){case0:intnewVal=42;//Invalidbreak;case1:intnewVal2;//ValidnewVal2=42;break;case2:break;} 最佳答案 实际上,规则是您不能跳入经过具有初始化的声

c++ - 在 C++ 中使用标记进行静态结构初始化

我已经在stackoverflow上搜索了一个答案,但我找不到相关的东西。我正在尝试通过指定标签来初始化具有初始值的静态结构实例,但在编译时出现错误:src/version.cpp:10:error:expectedprimary-expressionbefore‘.’标记代码如下://htypedefstruct{intlots_of_ints;/*...lotsofothermembers*/constchar*build_date;constchar*build_version;}infos;错误代码://Cstaticconstchar*version_date=VERSION

c++ - 这个 unique_ptr 的初始化有什么问题?

有人能告诉我,unique_ptr的以下初始化有什么问题吗?intmain(){unique_ptrpy(nullptr);py=newint;....}g++-O2xxx.cc-lm-oxxx-std=c++11说:error:nomatchfor‘operator=’(operandtypesare‘std::unique_ptr’and‘int*’)py=newint;^做unique_ptrpx(newint);工作得很好。 最佳答案 两段代码的初始化都很好,unique_ptr有constructors对于nullptr和

c++ - 未初始化的数据行为是否明确规定?

注意:我使用的是g++编译器(我听说它非常好,应该非常接近标准)。我有我能想到的最简单的类:classBaseClass{public:intpub;};然后我有三个同样简单的程序来创建BaseClass对象并打印出它们数据的[uninitialized]值。案例一BaseClassB1;cout打印出来:B1.pub=1629556548这很好。我实际上认为它会被初始化为零,因为它是POD或普通旧数据类型或类似的东西,但我想不是吗?到目前为止一切顺利。案例2BaseClassB1;cout打印出来:B1.pub=1629556548B2.pub=0这绝对是奇怪的。我以完全相同的方式创

c++ - 内存集不工作

我正在尝试在纯二维数组上使用memset,使用以下代码:#include#includeusingnamespacestd;intmain(){intl[3][3];memset(l,1,sizeof(l));for(inti=0;i我希望使用以下行将整个数组初始化为1:内存设置(l,1,sizeof(l));但我没有得到预期的值,它给了我以下输出:168430091684300916843009168430091684300916843009168430091684300916843009以为可能是编译器的问题,于是尝试用Ideone:http://ideone.com/VFYUDg