クラスがあるとします:
class foo
{
....
//some constructors here set val=34
....
private:
int val;
int & foo::operator,()
{
return val;
}
};
そして、私はそれを次のように使用できるようにしたい:
foo bar;
printf(" %d ", bar); //i need to get value of bar.val
//with just using bar itself with
//using an overloading
//but , overloading does not work
//i need to get 34 without using bar.val
//i need this without any getter
//i need val to be private
質問: この種のオーバーロードは可能ですか? はいの場合、どのように?
私は試した:
int foo::operator int()
{
return val;
}
しかし、「変換関数では戻り値の型が指定されていない可能性があります」と書かれています:(
私は試した:
operator int() const { return val; }
変換は、printf & c の外でのみ機能します。
int e=foo;
printf(" %d ",e); //works