草庐IT

compound-operator

全部标签

c++ - 模板和类型转换运算符(operator)

此代码可在CodeGear2009和VisualStudio2010中编译,但不能在gcc中编译。为什么?classFoo{public:operatorint()const;templateTget()const{returnthis->operatorT();}};Foo::operatorint()const{return5;}错误信息是:test.cpp:在成员函数`TFoo::get()const'中:test.cpp:6:错误:“constclassFoo”没有名为“operatorT”的成员 最佳答案 这是G++中的错

c++ - 替代 ->operator()

如果objp是指针,是否有比调用objp->operator()(x,y,z)更好的语法?&objp(x,y,z)不起作用。由于所有的符号,这很难用谷歌搜索。抱歉,这很愚蠢。 最佳答案 您可以使用(*objp)(x,y,z);作为替代。 关于c++-替代->operator(),我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/31757675/

c++ operator= const 引用的方法

我正在用这样的const引用编写类:classB;classfoo{constB&b;foo(constB&newb):b(newb){}voidoperator=(constfoo&foo2){//Thisdoesnotworkfoo.b=foo2.b;}};我正在尝试定义一个有效的运算符=显然=不起作用,因为不允许我更改const引用。这有办法让引用指向另一个对象吗?如果b不是const,C++将为我提供一个有效的operator=。如果我将一个成员定义为constcl将吐出:警告C4512:“foo”:无法生成赋值运算符 最佳答案

c++ - 我在以下函数中收到错误 no match for operator >>。怎么了?

voidGetarrayElements(inta[]){intk=0;while(true){cout>a[k]>>endl;if(a[k]=0){k+=1;}else{break;}}}我试图将0到100之间的一些输入值读入一个数组,但我收到了这个错误。“不匹配运算符>>”。有什么问题吗? 最佳答案 endl只能应用于cout等输出流;你不能在cin上使用它。 关于c++-我在以下函数中收到错误nomatchforoperator>>。怎么了?,我们在StackOverflow上找到

c++ - 二进制 '==' : no operator found which takes a left-hand operand of type 'std::string' (or there is no acceptable conversion)

我正在编写一个比较std::strings的模板类函数。std::string是模板参数。我的问题是我无法用“==”运算符比较两个const字符串,然后我想我创建了两个非常量临时字符串变量来执行比较,但它仍然无法编译。不知道为什么。类VGraph被实例化为VGraphmyGraph;templatesize_tVGraph::find(constV&vert){Vtemp=vert;//(1)for(size_ti=0;i相关函数原型(prototype)templateconstV&VVertex::getVertex(); 最佳答案

c++ - ostream::write 或 ostream::operator<< 在什么情况下会失败?

在我的C++代码中,我不断地将不同的值写入文件。我的问题是,考虑到文件已成功打开这一事实,如果在任何情况下write或 最佳答案 失败原因太多,无法一一列举。可能的是:分区终于满了用户超出了他的磁盘配额分区已被粗暴地卸载分区已损坏(文件系统错误)磁盘发生物理故障...DoIneedtocheckeverysinglecallofwriteor如果您希望您的程序对故障具有弹性,那么肯定会。如果您不这样做,则仅表示您正在写入的数据可能会或可能不会被写入,这等于说您不关心它。注意:您可以设置std::ostream::exceptions

c++ - 为任何 vector 编写 operator<< 的模板

我正在尝试为任何可迭代容器编写模板运算符。得到一个奇怪的错误:#includetemplatestd::ostream&operatorvec.cc:5:6:error:useofoverloadedoperator'为什么会出现这个错误?我如何实现我想要的? 最佳答案 添加templatestd::ostream&operator与其他人发生冲突globaloverloads的operator.要解决这个问题,我们可以使用以下方法将您的模板限制为任何vector而不是任何类型templatestd::ostream&operato

c++ - 为什么以下不调用重载的 operator== (const String &, const String &)? "cobble"== "stone"

为什么以下不调用重载的operator==(constString&,constString&)?"cobble"=="stone" 最佳答案 因为在C++中,字符串字面量是constchar[]类型(也叫以零结尾的字符串常量),而不是std::string,更不用说String(无论是什么)。有一个内置的operator==通过比较它们的地址来比较两个char*。由于数组可隐式转换为指向其第一个元素的指针(由于,您猜对了,C继承),此运算符介入,您比较的是这些文字在内存中的地址。假设您的String类具有来自constchar*(

c++ - 重载 << 运算符错误 C2804 : binary 'operator <<' has too many parameters

这是我的类(class):#ifndefCLOCK_H#defineCLOCK_Husingnamespacestd;classClock{//MemberVariablesprivate:inthours,minutes;voidfixTime();public://Getter&settormethods.voidsetHours(inthrs);intgetHours()const;voidsetMinutes(intmins);intgetMinutes()const;//ConstructorsClock();Clock(int);Clock(int,int);//CopyC

C++ 重载 : Overloading the [][] operator

这个问题在这里已经有了答案:Operator[][]overload(17个答案)关闭6年前。问题是是否可以重载[][]。在像vector>这样的正常情况下,我们正在重载[]运算符。但是在如果为[][]定义特殊含义的情况下是否可以有这样的运算符