我有示例代码和类:
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。
答案 0 :(得分:0)
#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;
}