所以我一直在四处寻找帮助但却没有任何结果。 有没有办法将类作为变量传递并让它引用该类的成员?
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.
我有没有办法Func
从Bar
foo
拉出{{1}}?
提前谢谢。
答案 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回答的班级成员操作员。