草庐IT

HAS_ITERATOR_DEBUGGING

全部标签

c++ - 转发声明结构时出错 : "has a previous declaration here"

在构建我的小型C++项目时,出现以下2个错误,无法找出原因:错误:在“结构”之后使用类型定义名称“TTF_Font”。指向Foo.h中的以下代码行:structTTF_Font;。错误:“TTF_Font”在此之前有一个声明。指向以下代码行:typedefstruct_TTF_FontTTF_Font;inSDL_ttf.h。我已将其缩小到新测试项目中的以下文件:Foo.h:#ifndefFOO_H#defineFOO_HstructTTF_Font;classFoo{TTF_Font*font;};#endif//FOO_HFoo.cpp:#include"Foo.h"#includ

c++ - std::reverse_copy "error: function call has aggregate value"

#include#include#include#includeusingnamespacestd;intmain(){intarrA[]={1,2,3,4,5,6,7,8,9};vectorvecIntA(arrA,arrA+sizeof(arrA)/sizeof(arrA[0]));vectorvecIntB(vecIntA.size());//copy((vecIntA.rbegin()+3).base(),(vecIntA.rbegin()+1).base(),vecIntB.begin());//OKvector::iterators=(vecIntA.rbegin()+3)

c++ - 为什么 ranges::ostream_iterator 是默认可构造的?

这个问题遵循评论中的讨论here.在EricNiebler的ranges-v3library中(这有点成为C++20标准的一部分),ranges::ostream_iterator是default-constructible-没有ostream。怎么会?我认为后来有效构造的“虚拟”构造是C++中的反模式,我们正在逐渐摆脱这种缺陷。std::ostream迭代器canonlybeconstructedwithastream(目前-在C++20之前)。似乎我们可以用默认构造的range::ostream_iterator做任何事情...所以,这是怎么回事? 最佳

c++ - 继承与聚合以及 "has-a"与 "is-a"。

在我的代码中,我发现使用类似混合的继承来组合具有不同block的对象很有用。我有:className{public:typedefint32_tvalue_type;public://ctorsanddtorsvoidset_value(value_typevalue){value_=value;}constvalue_type&value()const{returnvalue_;}private:value_typevalue_;};classNamedObject{public:voidset_name(constName&name){name_=name;}constName&n

c++ - transform_iterator 编译问题

你好,我不喜欢发布编译问题,但我真的搞不懂这个问题。使用此代码:#include#includeusingnamespacestd;templatestructget_value{constV&operator()(std::pairconst&p){returnp.second;}};classtest{typedefmapTMap;TMapmymap;public:typedefget_valueF;typedefboost::transform_iteratortransform_iterator;transform_iteratorbegin(){returnmake_tran

c++ - 为什么 std::istream_iterator 忽略换行符?

我有以下代码:#include#include#includeintmain(){std::stringstreamstr;strit(str),end;for(;it!=end;++it){std::cout输出是:[abcdef][97][98][99][100][101][102]为什么std::istream_iterator忽略换行符? 最佳答案 因为istream_iterator使用operator>>。并且istream::operator>>(char)会跳过空格,除非您取消设置流的skipws标志。(例如使用no

c++ - 视觉 C++ 2008 : debugging data behind pointer array

如何在VisualStudio2008中查看数组指针后面的数据而不是第一项?如果能看到任意数量的项目,而不仅仅是第一个,那将非常有用。 最佳答案 char*p=newchar[100];在监window口中输入:p,100 关于c++-视觉C++2008:debuggingdatabehindpointerarray,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/3659108/

c++ - g++ 表示 : warning: statement has no effect for shift bits operators

我正在实现alkhwarizmi算法。没错,但我的g++编译器不喜欢移位运算符:>>和当我编译它时,我得到这个输出:>g++-Wall-std=c++0x-o"Al-khwarizmialgorithm.o""Al-khwarizmialgorithm.cpp"(indirectory:/home/akronix/workspace/Algorithms)>Al-khwarizmialgorithm.cpp:Infunction‘intalkhwarizmi(int,int)’:Al-khwarizmialgorithm.cpp:31:9:warning:statementhasnoe

c++ - 用指针理解 const_iterator?

我试图理解const_iterator的含义。我有以下示例代码:voidCustomerService::RefreshCustomers(){for(std::vector::const_iteratorit=customers_.begin();it!=customers_.end();it++){(*it)->Refresh();}}Refresh()是Customer类中的一个方法,它没有定义为const。起初我以为const_iterator应该禁止修改容器的元素。但是,此代码可以毫无怨言地编译。这是因为正在进行额外级别的间接访问吗?const_iterator究竟是做什么/

c++ - 在模板中返回 std::set<T>::iterator 时出错

我正在围绕std::set制作一个模板包装器。为什么Begin()函数声明会出错?templateclassCSafeSet{public:CSafeSet();~CSafeSet();std::set::iteratorBegin();private:std::set_Set;};错误:类型“std::set,std::allocator>”不是从类型“CSafeSet”派生的 最佳答案 尝试typename:templateclassCSafeSet{public:CSafeSet();~CSafeSet();typenames