如何在类中定义operator =以使其中的变量分配给外部变量

时间:2017-03-22 22:04:55

标签: operator-overloading c++14

我有示例代码和类:

class a{
    int x;
    a(){
        this->x = 335; /* example number*/
    }
public:
    void operator=(int);
};
void a::operator=(int source){
    this->x = source;
}
main(){
    int i = 100;
    a example_class;
    example_class = i; //works fine!
    i = example_class; /*this is what I want to do.*/

}

这个洞的问题是我无法解决 使operator =是朋友的功能 因此命令:" i = example_class" 无法完成,因为我无法在我的类中创建函数,就像我通常使用自己的类一样。

最后: 我该如何完成命令: " i = example_class"当。。。的时候 operator = can不能超过1 参数β

注释: 我知道代码没有做任何事情。 而且只是一个例子。关键点 真正重要的是什么。 另外,我需要说清楚我 无法创建任何功能 目标类(在本例中为int)。只有在 源类(在本例中为a)。 我也想表明我知道 它是不可能宣布的 operator =作为朋友的功能。

我知道我可以创建一个函数 获取对int x或make的引用 int x public但我不想这样做 因为真正的代码涉及复杂 用于在类型之间转换的函数 所以它对我来说很重要 写:" i = example_class;"。 谢谢,    RONEN。

1 个答案:

答案 0 :(得分:0)

Working example

#include <iostream>

class a {
    int x = 355;
public:
    void operator=(int);
    operator int();
};

void a::operator=(int source){
    x = source;
}

a::operator int() {
    return x;
}

int main(int, char**) {
    int i = 100;
    a example_class;
    example_class = i;
    int j = example_class;
    std::cout << j << std::endl;
}