草庐IT

c++ - 重载的 << 插入运算符无法正常工作

所以我想不通为什么我的插入运算符不能为我的列表类工作。我已经看了一段时间,我认为重载的语法是正确的。不确定这一点。关于为什么它不起作用的任何提示?这是代码:编辑:将一些代码更改为当前的代码。抱歉,现在的问题是我无法让它打印任何东西,它只是打印和空行。这是驱动程序:#include#include"polynomial.h"usingnamespacestd;intmain(){Polynomial*poly=newPolynomial();poly->set_coefficient(3,2);poly->set_coefficient(0,2);poly->set_coefficien

C++模板运算符编译错误

我正在尝试制作一个类似于std::ostream的C++类,它将接受它的输入并写入两个std::ostream在构造函数中给出。在这里它和合适的operator一起模板:structSplitStream{SplitStream(std::ostream&a_,std::ostream&b_):a(a_),b(b_){}std::ostream&a,&b;};templateconstSplitStream&operator该代码下方的几行,我尝试使用此类:voidfoo(SplitStream&out){doublesome_double=1.23;out我得到了这个相当神秘的错误:

c++ - 模板化 ostream 重载歧义错误 : basic_ostream<char> vs const char[]

我正在尝试了解ostream重载。考虑一下#includeusingstd::ostream;enumclassA{a1,a2,a3};templateostream&operator编译时出现如下错误test.cpp:13:17:error:ambiguousoverloadfor‘operator}’and‘constchar[3]’)returnout虽然取消注释正常功能和注释模板版本工作正常。为什么二义性不是在正常功能中,为什么是模板化版本 最佳答案 非模板运算符不会引起任何歧义,因为该运算符本身无法解决此调用:return

c++ - 重载运算符 << Boost Log

inlinestd::ostream&operator&vector){ptest{1,2,3};LOG_DEBUG_MESSAGE你好,我为std::vector重载了我的运算符boost/log/utility/formatting_ostream.hpp:710:19:error:cannotbind'boost::log::v2_mt_posix::basic_formatting_ostream::ostream_type{akastd::basic_ostream}'lvalueto'std::basic_ostream&&'strm.stream()/opt/gcc.4.

c++ - operator<< with boost::variant 是如何实现的

我明白boost::variant是这样实现的templatestructvariant{std::aligned_union::typebuffer;....};我们如何制作operator对于像这样的结构,打印缓冲区中存储的类型并将其传递给operator对于cout?为此,我们需要知道存储在缓冲区中的元素的类型,对吧?有没有办法知道这一点?此外,我正在寻找对此类实现的解释(如果存在的话)。不仅仅是它的存在以及我如何使用它。 最佳答案 Boost有一个apply_visitor函数,它接受一个通用函数对象并将变量的类型传递给它。

c++ - std::ostream 到 QString?

有没有办法将std::ostream转换为QString?如果有用,请允许我展开:我正在用C++/Qt编写一个程序,我过去常常(不)通过使用std::cout来处理/调试异常,例如:std::cout现在我想将错误作为QString抛出并在以后捕获它们,所以我现在改为:throw(QString("ErrorinvoidCat::eat(constBird&bird):birdhasnegativeweight"));我的问题是我一直在重载运算符Bird,所以我实际上会写:std::cout现在有什么方法可以将其作为QString抛出吗?我希望能够写出类似的东西:std::ostrea

c++ - 根据某个功能是否存在启用模板

我想设计一个自动提供operator的模板所有类(class)T为此T::print_to(std::ostream&)存在并且可以被调用,这样我就可以将打印函数定义为成员函数(特别是利用虚拟调用)。通过反复试验,我设法得出了这个结论:template().print_to(std::declval()))>std::ostream&operator它似乎有效,但由于我对SFINAE和这类技巧还很陌生,想知道是否有任何陷阱或可以改进。我在https://ideone.com/uLJxac放了一个小测试台.如果可能,我想要一个C++14解决方案,因为我正在使用C++14代码库。但是,如果

c++ - std::vector 的 Typedef 和 ostream 运算符

我创建了一个Chromosome类,它最终只是一个带有ostream运算符的vector包装器,所以我决定改用typedefvector。但是,我在使用模板化的ostream运算符时遇到了问题……这是最好的方法吗?(我见过一些方法,但都没有奏效)templateclassChromosome{public:typedeftypenamestd::vectortype;typedeftypenamestd::pairptr_pair;};template//line19below:std::ostream&operator::type&chromosome){for(autoiter=c

c++ - 我应该如何正确地将 cout 分配给静态 ostream 引用变量?

我正在定义这样一个类:classStaticRuntimeContext{public:enumVerbosity{kHIGH,kMEDIUM,kLOW,kSILENT};staticvoidConstruct();staticstd::ostream&stdout1(){returnstdout1_;}staticstd::ostream&stdout2(){returnstdout2_;}staticstd::ostream&stdout3(){returnstdout3_;}staticstd::ostream&stderr(){returnstderr_;}protected:

c++ - boost::lexical_cast 和非内置类型的字符串化

我有一个(也许)关于复合类型的boost::lexical_cast的简单问题(在我的例子中是std::vector。我的第一个模板化字符串化函数版本如下templatestd::stringstringiy(constT&t){std::ostringstreamo;o下面是一个工作示例:vectorx(10,-3;cout>(x)输出“-3-3-3-3-3-3-3-3”~但出于性能原因,我想利用boost::lexical_cast现在我更改了函数实现:templatestd::stringstringiy(constT&t){returnboost::lexical_cast(t