让我说我有一个班级
Class rofl {
int a;
float b;
rofl::rofl(int a, float b) {
this->a = a; this->b = b;
}
}
可以吗
rofl* sup = new rofl(5, 2.0f);
float hello = sup;
这样变量hello会得到sup.b的值吗?
答案 0 :(得分:8)
是的,您可以重载类型转换运算符:
class Rofl {
public:
operator float() const { return b; }
...
};
请参阅http://ideone.com/Y7UwV了解演示。
但是,请参阅Scott Meyers的More Effective C++第5项,标题为“警惕用户定义的转换操作”。允许从复杂类型进行隐式转换通常会导致各种微妙的拼写错误。
答案 1 :(得分:1)
你也可以走另一条路:
class rofl {
public:
float operator=(float f) { b = f; return f; }
...
};
rofl sup(5, 2.0f);
sup = 4.0f;
答案 2 :(得分:1)
不,如果你声明这是不可能的。在您的代码中,sup
不是rofl
而是rofl*
,并且不允许创建rofl*
到float
转化。此外,您的问题格式不正确:sup.b
并未提及任何内容。
也就是说,您可能不需要动态分配实例,在这种情况下其他答案是正确的。