你需要定义一个可以写的转换运算符
intVAR = myTYPEvar;
例如
operator int() const { return myTYPEin.getprivateint(); }
考虑到在这种情况下,成员函数 getprivateint 必须使用限定符 const 定义。
至于您的赋值运算符,它只分配使用赋值运算符的表达式的值,其类型为 int。例如,使用您的赋值运算符,您可以编写
myTYPE obj1, obj2;
int x = obj1 = obj2;
在这种情况下,obj2 的 getprivateint() 调用的值将分配给 x。
这是一个演示示例,说明您将使用赋值运算符获得什么
#include <iostream>
int main()
{
struct A
{
A( int x ) : x ( x ) {}
int operator = ( const A & a )
{
return a.x;
}
int x;
};
A a1( 10 ), a2( 20 );
int x = a1 = a2;
std::cout << "x = " << x
<< ", a1.x = " << a1.x
<< ", a2.x = " << a2.x << std::endl;
return 0;
}
输出是
x = 20, a1.x = 10, a2.x = 20
但是你可能不会写例子
x = a1;
您需要如上所示的转换运算符。
或者如果使用结构 A 的示例,代码将如下所示
#include <iostream>
int main()
{
struct A
{
A( int x ) : x ( x ) {}
operator int() const { return x; }
int x;
};
A a1( 10 );
int x = a1;
std::cout << "x = " << x
<< ", a1.x = " << a1.x
<< std::endl;
return 0;
}
输出是
x = 10, a1.x = 10