Несоответствие типов в Eclipse при вызове функции Friend со ссылкой на объект через указатель this - PullRequest
0 голосов
/ 04 июля 2019

Когда я пытаюсь вызвать функцию друга определенного класса, передав ссылку на объект этого класса посредством разыменования указателя this, Eclipse выдает ошибку несоответствия типов, но программа все равно компилируется и запускается хорошо.

Чтобы увидеть, является ли это чем-то эксклюзивным для Eclipse, я попытался запустить код с несколькими онлайн-компиляторами. onlinegdb и codechef скомпилированы и работают без ошибок. Так как программа технически работает, я мог бы просто проигнорировать эту ошибку и двигаться дальше, но так как я не хочу сталкиваться с каким-либо неопределенным поведением в будущем, возможно, лучше было бы разобраться с этим прямо сейчас.

#include <iostream>

class Foo
{
public:
    Foo ()
    {
        Bar (*this); //<---The error occurs on this line
    }
friend void Bar (Foo &);
};

void Bar (Foo &foo)
{
    std::cout << "Inside Bar()!" << std::endl;
}

int main ()
{
    Foo foo;
}

Сообщение об ошибке:
Неверные аргументы Кандидатами являются: Void Bar (Foo &) «

1 Ответ

0 голосов
/ 05 июля 2019

Перемещение объявления друзей в начало объявления класса решило проблему. По-видимому, это происходило из-за того, что средство проверки синтаксиса Eclipse не могло правильно проверить код.
Спасибо @Sam Varshavchik и @john за их полезные ответы.

...