【发布时间】:2012-04-08 22:14:07
【问题描述】:
首先,我一直在四处寻找我的特定问题,但我无法找到任何答案。
所以,我想做的是重载<< 运算符,以便我可以这样做:
myObj = new MyObj();
unsigned int v = 2;
myObj << v;
请记住,使用此类:
class MyObj{
private:
char *data;
int count;
public:
MyObj(){ data = new char[64]; count = 0; }
//This "is" the overloaded << method
template <typename T>
T& operator<<(T val){
*(T*)(data + count) = val;
count += sizeof(T);
}
}
效果应该和这个一样(假设data是公共属性):
myObj << v;
应该是一样的
*(unsigned int*)(myObj.data + myObj.count) = v;
myObj.count += sizeof(v);
关于如何做的任何想法?我只找到了重载 I/O 或位运算符的方法,但是像这样。
谢谢!
【问题讨论】:
-
好的,对不起。标题应该是“>”。我也想重载>>,但这不是我打算发布的内容。
-
您应该可以使用标签下方的链接来编辑您的问题。反正我不是C++人,但不是
operator<<,不是overload<<? -
称为算子
-
准确来说,多半叫
T & operator << (T & val)。 -
你的问题是什么?您是否担心未定义的行为、缓冲区溢出、不知道解组的正确类型或其他问题?因为
operator>>基本上和operator<<一样被重载了。