设置类的返回值

Set return value for class?

本文关键字:返回值 设置      更新时间:2023-10-16

所以我一直在四处寻找帮助,但一无所获。有没有办法将类作为变量传递并让它引用该类的成员?

例如,代替

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 回答的那样作为类成员操作员。