是否可以在对象上定义自定义转换以成为方法调用的结果?
Is it possible to define a custom cast on an object to become the result of a method call?
是否可以在对象上定义自定义强制转换,以便对象强制转换为方法调用的结果?
class Foo {
public:
...
int method() { return 3; }
};
Foo foo;
int bar = foo + 7; // 10
您可以提供一个转换函数,如下所示:
方法一
直接return一个int
而不使用method
在转换函数中。
class Foo {
public:
//conversion function
operator int()
{
return 3;
}
};
Foo foo;
int bar = foo + 7; // bar is initialized with 10
int main()
{
std::cout<<bar;//prints 10
return 0;
}
或
方法二
在转换函数中使用 method
到 return 一个 int
。
class Foo {
public:
int method() { return 3; }
operator int()
{
return method();
}
};
Foo foo;
int bar = foo + 7; // 10
int main()
{
std::cout<<bar;//prints 10
return 0;
}
啊。我想多了。
#include <iostream>
#include <string>
class Foo {
public:
Foo() { _data = 3; }
int method() { return _data; }
operator int() {
return method();
}
int _data;
};
int main()
{
Foo foo;
int bar = foo + 7;
std::cout << bar << std::endl;
}
是否可以在对象上定义自定义强制转换,以便对象强制转换为方法调用的结果?
class Foo {
public:
...
int method() { return 3; }
};
Foo foo;
int bar = foo + 7; // 10
您可以提供一个转换函数,如下所示:
方法一
直接return一个int
而不使用method
在转换函数中。
class Foo {
public:
//conversion function
operator int()
{
return 3;
}
};
Foo foo;
int bar = foo + 7; // bar is initialized with 10
int main()
{
std::cout<<bar;//prints 10
return 0;
}
或
方法二
在转换函数中使用 method
到 return 一个 int
。
class Foo {
public:
int method() { return 3; }
operator int()
{
return method();
}
};
Foo foo;
int bar = foo + 7; // 10
int main()
{
std::cout<<bar;//prints 10
return 0;
}
啊。我想多了。
#include <iostream>
#include <string>
class Foo {
public:
Foo() { _data = 3; }
int method() { return _data; }
operator int() {
return method();
}
int _data;
};
int main()
{
Foo foo;
int bar = foo + 7;
std::cout << bar << std::endl;
}