Aşağıdaki kod göz işaretçi ile ilişkili operatörler uygulanması:örtük dönüştürme
struct X
{
int x;
};
X xInstance;
class A
{
public:
operator X*()
{
return &xInstance;
}
};
int main()
{
A a;
*a = X(); // ok
a[0] = X(); // ok
// a->x = 0; // error
}
A
bir işaretçi türüne örtülü bir dönüşüm vardır. Bir işaretçinin gerekli olduğu üç bağlamda kullanmayı denerim; iki ilk satır gayet iyi, ancak 'a dolaylı dönüşüme dayanarak struct X
operator->
arasındaki bir alana başvurmaya çalışmaz. Neden? Kavramsal olarak, bu bağlamda operator[]
operator->
'dan nasıl farklı?
g++
6.3.0 ile test edilmiştir ve aşırı yük dönüştürme amacıyla yerleşik operatörler temsil VC++ 2017
C++ 14 [over.match.oper] /3.3 özellikle "operator->" (ve " operatör & ') yerleşik adaylar set boş –
@ MM İyi yakalama. Orada bir yerlerde olduğunu sanıyordum. – aschepler