为类设置返回值?

时间:2014-11-20 01:33:23

标签: c++ class parameter-passing return-value getter-setter

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

e.g。而不是

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.

我有没有办法FuncBar foo拉出{{1}}?

提前谢谢。

3 个答案:

答案 0 :(得分:2)

您可以向您的班级添加隐式转化功能:

struct myclass
{
    float Bar;

    operator float() const { return Bar; }
    // ^^^^^^^^^^^^^^^^^^^
};

然后,只要需要myclass,您就可以使用float类型的对象:

myclass x;
extern void f(float);
f(x);  // OK

隐式转换通常是一个坏主意,这种设计看起来并不是非常有用,并且可能会以您最终会后悔的方式污染您的代码库,但如果没有上下文,这将是您所要求的。

答案 1 :(得分:0)

void Func(myclass &mc)
{
    float x = mc.foo;
   // do floaty stuff with x

}

然后你可以做

myclass foo; 
foo.Bar = 0;
Func(foo);

虽然这可能不是你想要的:(

答案 2 :(得分:0)

您需要为您的类定义强制转换运算符;

如果flat_mbr是公共的,则为globaly:

operator float(const MyClass& ref)
{
    return ref.float_mbr;
}

或者作为Kerrek回答的班级成员操作员。