如何为c ++类定义默认属性?

时间:2015-04-25 07:51:48

标签: c++ class object

我希望能够做到这样的事情:

myDataType Data1; 
myDataType Data2;

Data1 = "Something";
Data2 = Data1;

设置Data1很简单,因为我重载了=运算符。我希望能够做的是按原样键入第2行。没有默认属性,我必须输入:

Data2 = Data1.theDesiredProperty;

在我看来应该可以这样做,因为字符串类以这种方式工作。如果将“myDataType”替换为“string”(并包含字符串头文件),则不必引用字符串的某些默认属性。

感谢。

2 个答案:

答案 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);