ben varsa, kullanıcı tanımlı olduğu gibi operator+()
: beklendiği gibi Ardından aşağıdaki işlerHata
class A
{
public:
A operator+(A)
{
return A();
}
};
:
A a = A() + A();
ama g ++ - 4.7, aşağıdaki hata iletisini verir:
A a = (A()) + A();
Özellikle hata iletisidir error: no match for ‘operator+’ in ‘+A()’
.
İfadede (A())
göz ardı ediliyor gibi görünüyor.
Sorum şu ki: A a = (A()) + A();
derlenmeli ve değilse, neden olmasın?
Not: Bu, #define X (Identity())
yaptığımda ve daha sonra X + X
'u denediğimde bana oldu.
İlginç. Bilmediyseniz, tek başına artı operatörü, ör. +5 olarak ele alınır. – chris
@chris Şimdi bahsettiğinize göre, bu bölümü bölüm operatörüne değiştirdiğinizde hata oluşmaz, ancak toplama, çıkarma ve çarpma operatörleri için geçerlidir. Bu durumda ikili olmayanlar yerine tekli operatörleri ayrıştırma gibi görünüyor. – SirGuy