我希望能够做到这样的事情:
myDataType Data1;
myDataType Data2;
Data1 = "Something";
Data2 = Data1;
设置Data1很简单,因为我重载了=运算符。我希望能够做的是按原样键入第2行。没有默认属性,我必须输入:
Data2 = Data1.theDesiredProperty;
在我看来应该可以这样做,因为字符串类以这种方式工作。如果将“myDataType”替换为“string”(并包含字符串头文件),则不必引用字符串的某些默认属性。
感谢。
答案 0 :(得分:1)
我认为这里最有用的是看一个如何做到这一点的例子:
class myDataType {
public:
myDataType(const char *message = ""): message_(message) {}
const char * message() const {
return message_;
}
private:
const char *message_;
};
int main() {
myDataType Data1;
myDataType Data2;
Data1 = "Something";
Data2 = Data1;
myDataType Data3 = "Something";
myDataType Data4 = Data1;
}
答案 1 :(得分:0)
好的,所以答案是全局重载运算符并使用accesser函数从对象中读取所需的属性。我对运算符重载的所有经验都是将它们放在类中,并且在该位置它们只处理对象(如果它在左侧)。为了按照我想要的方式处理右侧的对象,操作符重载应该在类定义之外并使用关键字friend。我不确定为什么要获得那些丢失的信息是如此困难,但是如果有其他人在看的话就在这里。
friend bool operator==(const std::string& lhs, const myDataType& rhs);