Когда я пытаюсь вызвать функцию друга определенного класса, передав ссылку на объект этого класса посредством разыменования указателя 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 &)
«