草庐IT

constructor_arguments

全部标签

c++ - std::runtime_error 子类的 "call to deleted constructor of"编译器错误

我从std::runtime_error派生了一个异常类,以便添加对异常流的支持。我收到一个奇怪的编译器错误输出,我不确定如何解决?clang++-std=c++11-stdlib=libc++-g-Wall-I../-I/usr/local/includeMain.cpp-cMain.cpp:43:19:error:calltodeletedconstructorof'EarthException'throwEarthException(__FILE__,__LINE__)^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~../EarthExce

c++ - 最烦人的解析 : why doesn't `g( ( f() ) );` call `f` 's default constructor and pass the result to `g` 's ctor that takes a `f` ?

这不是Mostvexingparse:whydoesn'tAa(());work?的拷贝,它基于Aa());形式的解析,其OP认为可以使用额外的集合默认构造一个A对象括号。相比之下,我的问题是关于2个类,f和g,其中f具有默认构造函数,而g的构造函数采用f。我想用一个临时的f参数调用g的构造函数,而不使用统一的初始化语法。g的构造函数中有一个std::cout语句,因此缺少输出表示函数声明而不是g对象实例化。我在注释中用3个数字注释了示例代码。#1和#2编译时#3被注释掉,反之亦然:#includestructf{};structg{g(f){std::cout#1:我认为#1声明了一

C++ --- 错误 C2664 : 'int scanf(const char *,...)' : cannot convert argument 1 from 'int' to 'const char *'

我是C++的新手,我正在尝试构建这个非常简单的代码,但我不明白为什么会出现此错误:Error1errorC2664:'intscanf(constchar*,...)':cannotconvertargument1from'int'to'constchar*'代码如下://lab.cpp:Definestheentrypointfortheconsoleapplication.//#include"stdafx.h"#includeintmain(intargc,char*argv[]){introw=0;printf("Pleaseenterthenumberofrows:");sc

c++ - 复制初始化: why move or copy constructor was not called even if copy-elision is turned off?

我的问题不同,因为我可能“知道”复制省略。我正在学习复制初始化。但是,以下代码让我感到困惑,因为我已经使用-fno-elide-contructors-O0选项关闭了复制省略。#includeusingnamespacestd;classtest{public:test(inta_,intb_):a{a_},b{b_}{}test(consttest&other){cout我首先使用命令构建:g++-std=c++11-fno-elide-constructors-O0main.cpp-omain得到如下结果:**showelideconstructors**moveconstruct

c++ - 运行编译程序 - "Invalid argument"

我有一个简单的HelloWorldC++程序(main.cpp):#includeusingnamespacestd;intmain(void){cout我编译通过g++-Wall-pedantic-Wno-long-long-Werror-cmain.cpp然后添加“可执行”权限chmod+xmain.o并尝试运行它./main.o我的控制台返回-bash:./main.o:Invalidargument我在干什么? 最佳答案 -c选项指示编译器只编译“目标文件”中的源文件,而不链接它。如果没有链接步骤,您获得的目标文件不是可执行

C++ "No appropriate default constructor available"

我想在不使用STL的情况下创建一个数组链表。但是,我在将数组传递到我的链接列表时遇到困难...编译时出现上面列出的错误。我需要如何将数组传递给链表?谢谢!(有问题的代码有**标记,如果测试请去掉)单链表.h#pragmaonce#ifndefSinglyLinkedList_h#defineSinglyLinkedList_h#includetemplatestructnode{Typevalue;node*next;};templateclassSinglyLinkedList{private:node*head;public:SinglyLinkedList();~SinglyLi

c++ - 类 std::array of objects without default constructors

所以让我们假设我有以下类(class)classNoDefaultConstructor{NoDefaultConstructor()=delete;...};我还有另一个类,它有一个类型为NoDefaultConstructor和其他成员的数组classWrapper{std::arrayarr;...};如何在Wrapper的构造函数中初始化数组(可能在使用std::intializer_list的初始化列表中)?更具体地说,是我可以将参数传递给Wrapper的初始化列表中的数组构造函数以具有类似于以下的构造的唯一方法吗?我正在考虑这样做,因为将来数组的大小可能会发生变化。temp

c++ - "member of type foo has private copy constructor"错误 : why's it an error?

我试图定义这样一个类:#includeclassmy_class{private:someone_elsesfoo;public:myclass();~myclass();//...};但是编译器失败了:“someone_elses类型的字段foo有一个私有(private)的复制构造函数”。现在我知道我可以通过以下方式解决这个问题:classmy_class{private:someone_elses*foo;//...};my_class::my_class(){foo=newsomeone_elses();}my_class::~my_class(){deletefoo;}我的问

c++ - 使用 move-constructor 时将 self 重置为 nullptr 是个好习惯吗?

在C++11中,移动构造函数/运算符支持资源/内存移动。这是我的例子:classA{public:A():table_(nullptr),alloc_(0){}~A(){if(table_)delete[]table_;}A(constA&other){//table_isnotinitialized//if(table_)//delete[]table_;table_=newint[other.alloc_];memcpy(table_,other.table_,other.alloc_*sizeof(int));alloc_=other.alloc_;}A&operator=(co

c++ - 默认参数 : can only the last argument(s) be left?

我知道可以做类似的事情:intfoo(inta=0,intb=1){returna+b;}然后在没有默认参数的情况下使用它,例如:foo();//a=0,b=1->1或将最后一个作为默认值,例如:foo(2);//a=2andb=1default->3但是我的问题是:是否可以为第一个参数(a)使用默认值并给出第二个参数(b)的值我的第一个想法是这样做(行不通!):foo(,2);//a=0defaultandb=2这个语法是否存在或者这是不可能的? 最佳答案 不,在当前语法中这是不可能的。