草庐IT

copy-constructor

全部标签

C++ 编译 "error: expected constructor, destructor, or type conversion before ' =' token "

位于同一文件“foo.h”中的非常简单的代码:classXface{public:uint32_tm_tick;Xface(uint32_ttk){m_tick=tk;}}std::mapm;Xface*tmp;tmp=newXface(100);**//Error**m[1]=tmp;**//Error**tmp=newXface(200);**//Error**m[2]=tmp;**//Error**错误是错误:在“=”标记之前需要构造函数、析构函数或类型转换对于每个任务。 最佳答案 C++不是脚本语言。您可以在可执行代码块的范

c++ - 性能与可读性 : Local copies in functions

考虑以下代码:Vector2fBox::getCenter()const{constfloatx=width/2;constfloaty=height/2;returnVector2f(x,y);}这样写会不会提高性能:Vector2fBox::getCenter()const{returnVector2f(width/2,height/2);}我更喜欢第一个,因为它漂亮且可读,但我开始怀疑如果我这样做太多,我是否会失去一些性能,因为它会创建一个额外的不必要的拷贝。我知道你们中的一些人认为第二个函数同样可读,但这只是一个例子,我想问的更笼统,在这种情况下什么是好的编码实践。

c++ - 如何使用 std::copy 直接从文件流读取到容器?

我遇到了一个很酷的STL示例,它使用istream_iterators将标准输入(cin)复制到vector。vectorcol1;copy(istream_iterator(cin),istream_iterator(),back_inserter(col));我将如何执行类似于从文件流直接读取到容器中的操作?假设它是一个包含以下内容的简单文件:“敏捷的棕色狐狸跳过了懒惰的狗。”我希望每个单词在复制行之后成为vector中的一个单独元素。 最佳答案 打开文件成功后将cin替换为文件流对象:ifstreamfile("file.tx

c++ - 就地 std::copy_if

在我看来,std::copy_if对于过滤容器非常有用:std::vectorvec{1,2,3,4};autoitEnd=std::copy_if(vec.begin(),vec.end(),vec.begin(),[](inti){returni>2;});vec.resize(itEnd-vec.begin());但是,std::copy_if指定输入和输出范围不能重叠。还有其他选择吗? 最佳答案 copy_if主要用于将范围复制到另一个范围/容器,即按照设计,该算法的本质是将满足某些条件的元素复制到另一个(非重叠)范围或新容

c++ - 哪个更好 : a lying copy constructor or a non-standard one?

我有一个包含不可复制句柄的C++类。但是,该类必须有一个复制构造函数。因此,我实现了一个将句柄的所有权转移到新对象的方法(如下所示),classFoo{public:Foo():h_(INVALID_HANDLE_VALUE){};//transferthehandletothenewinstanceFoo(constFoo&other):h_(other.Detach()){};~Foo(){if(INVALID_HANDLE_VALUE!=h_)CloseHandle(h_);};//otherinterestingfunctions...private:///disallowas

c++ - Qt 拖放 : cannot move when copy is enabled (Ubuntu Gnome)

我正在实现一个View和一个模型,我希望在其中支持内部移动项目(通过拖动)和复制项目(通过在拖动时按Ctrl)。我已经按照说明完成了我需要做的一切。我已经设置了mime函数,我已经实现了removeRows()和flags()。问题是当我拖动时,它默认为复制操作(我得到带有加号的箭头光标,它确实通过在模型中创建一个新项目来复制项目)。我能看到的唯一区别是:如果我在supportedDropActions()中只返回Qt::MoveAction,它只会移动。如果我返回(Qt::CopyAction|Qt::MoveAction),它只会复制。有什么想法吗?我希望它像Nautilus(Gn

c++ - 错误 : expected constructor, 析构函数,或 ‘<’ token 之前的类型转换

我是C++的新手,但已经获得了一些Java经验。在接下来的简短C++练习中,我尝试使用类模板构建堆栈。不幸的是,它无法编译,我也不知道为什么。错误信息是:Stack.cpp:6:error:expectedconstructor,destructor,ortypeconversionbefore‘tokenStack.cpp:14:error:expectedinitializerbefore‘tokenStack.cpp:25:error:expectedinitializerbefore‘tokenmake[2]:*[build/Debug/GNU-Linux-x86/Stack.

c++ - lcov 问题 : weird duplicate constructor marked as not covered & function not marked as covered, 即使其行已被执行

在我通过启动并运行一个100%覆盖率的小型C++测试项目来了解更多关于自动化测试的过程中,我遇到了以下问题——尽管我所有的实际代码行和所有执行分支都是被测试覆盖,lcov仍然报告两行未经测试(它们只包含函数定义),以及一个据称未经测试的“重复”构造函数方法,即使它匹配我的“真实”构造函数(唯一定义和使用过的构造函数)完美。(跳到编辑最小复制案例)如果我使用gcovrpython脚本生成相同的覆盖率统计数据(来自相同的确切来源,.gcno和.gcda文件)并将结果传递给JenkinsCobertura插件,它会在所有计数上为我提供100%-行,条件和方法。我的意思是:JenkinsCob

C++ copy_if lambda 捕获 std::string

这是来自此处的后续问题:C++-Developingownversionofstd::count_if?我有以下功能://vectorforstoringthefilenamesthatcontainssoundstd::vectorFilesContainingSound;voidContainsSound(conststd::unique_ptr&s){//OpentheWavfileWavwaveFile=Wav("Samples/"+s->filename_);//Copythesignalthatcontainsthesufficientenergystd::copy_if(

c++ - 为什么我需要另一个迭代器作为 std::copy() 中的参数?

我不明白为什么我需要将另一个迭代器作为调用std::copy()以读取文件的第二个参数。迭代器如何结束文件?vectorv;istream_iteratoris(file),end;copy(is,end,back_inserter(v)); 最佳答案 Howisiterator'end'endingofafile?按照惯例和/或标准库中的设计决定。迭代器end是默认构造的,在cppreference上,我们了解默认的std:istream_iterator构造函数:constexpristream_iterator();Const