设置类的返回值
Set return value for class?
所以我一直在四处寻找帮助,但一无所获。有没有办法将类作为变量传递并让它引用该类的成员?
例如,代替
myclass foo;
foo.Bar = 0.0f;
Func(foo.Bar); //Func takes in a float.
如果我想Func
了解Bar
,而无需直接使用函数内部或外部的访问运算符。几乎就像一个自动设置器。
我希望能够做到这一点。
myclass foo;
foo.Bar = 0;
Func(foo); //Func takes in a float.
有没有办法让我Func
像这样从foo
中拉出Bar
?
提前谢谢你。
您可以向类添加隐式转换函数:
struct myclass
{
float Bar;
operator float() const { return Bar; }
// ^^^^^^^^^^^^^^^^^^^
};
然后,只要需要float
,就可以使用类型 myclass
的对象:
myclass x;
extern void f(float);
f(x); // OK
隐式转换通常是一个坏主意,这种设计似乎不是很有用,并且可能会以您最终会后悔的方式污染您的代码库,但是如果没有上下文,这将完成您要求的事情。
void Func(myclass &mc)
{
float x = mc.foo;
// do floaty stuff with x
}
然后你可以做
myclass foo;
foo.Bar = 0;
Func(foo);
虽然也许这不是你要找的:(
您需要为类定义强制转换运算符;
如果flat_mbr是公开的,则任一全局:
operator float(const MyClass& ref)
{
return ref.float_mbr;
}
或者像 Kerrek 回答的那样作为类成员操作员。
相关文章:
- 从python中调用C++函数并获取返回值
- 为什么模板类中的对象不能返回值
- 返回值优化:显式移动还是隐式
- lock_guard是否保护返回值
- 调用CreateProcess()并获取字符串的返回值
- 如何使 windows 命令提示符在C++可执行文件上显示返回值?
- 编译器警告:执行到达值返回函数的末尾而不返回值
- 查找 GCD:并非所有控制路径都返回值
- 在 Arduino 上使用 sscanf 会导致与 const char * 不匹配,并且返回值始终相同,尽管输入值不同
- 将返回值存储在函数指针数组的指针中是如何工作的?
- 当设置对象等于另一个函数的返回值时,为什么要调用移动构造函数/分配
- 将指针设置为函数的返回值
- 将私有结构设置为返回值
- 调用 cvSet2D() 来设置图像的像素值返回值 0
- 将子结构值设置为对象构造函数中安全的纯虚拟函数返回的值
- 设置返回值时忽略"still reachable"
- 给定一个 QTableWidgetItem,如何设置它的 column() 返回值
- 设置类的返回值
- 如何获取返回值并将其设置为 "x" ?
- 矢量擦除无需设置返回值即可工作