类和字符串之间的重载操作
Overloaded operation between class and string
我想对类中的运算符<<
使用重载操作。我知道如何在两个类之间执行此操作:
class output
{
public:
string x;
output (string a) : x(a) {}
output () {}
output operator<< (const output&);
};
output output::operator<< (const output& a)
{
/* return something that has to do with a.x and x, to make an operation */
}
这在使用 x = y << z
时有效,如果所有 都属于同一类,并且如果操作重载函数返回合适的值。但是,问题是,我希望操作的一部分是字符串(所以基本上,x
和 y
将具有类型 output
,并且z
类型 string
(。我希望这会起作用:
output output::operator<< (const string& a)
。但事实并非如此。所以我开始怀疑我要么误解了整个事情的用途,要么我只是想做一些根本没有意义的事情......我尝试搜索了一下,但找不到任何东西。但如果是这样,我到底误解了什么?还有没有其他方法可以实现我想要的?
帮助将不胜感激。
可以将运算符重载声明为非成员函数。这将允许您指定左侧和右侧操作数类型。
output & operator << (output &lhs, const string &rhs)
{
// do something with lhs and rhs
return lhs;
}
对于这种运算符,我怀疑您还希望通过引用返回output
对象(尽管这完全取决于您对它执行的操作(。
相关文章:
- 重载操作程序时出错>>用于类中的字符串 memebr
- 使用操作重载对象重新分配对象
- 我的移动分配操作程序重载的分段错误
- 重载按位 OR('|'),用于链接操作无法按预期工作
- 具有已定义操作重载的 C++ 非类型化值对象/变量库
- 重载二进制操作的正确方法
- 为什么为单个赋值操作调用复制构造函数和重载赋值运算符
- 使用重载运算符在函数调用时执行操作
- 方括号和圆括号操作器,如何选择重载
- 如何删除模板类的输出操作程序重载的错误
- 重载分配操作/流
- 使用模板操作重载 *(左侧和右侧)
- 重载模板类之外的操作
- 位字段操作中的运算符[] 重载?
- 在动态内存上操作,重载constmemeber函数有意义吗
- 在C++中创建一个具有多态性和操作重载的模板
- LNK 2019 尝试重载"<<"操作器时出错
- 在c++中操作重载赋值运算符
- 类和字符串之间的重载操作
- c++重载(+)操作