std::string convert();При компиляции этого кода компилятор выдает ошибку. Что тут не так и как исправить положение? Ответ и пояснение чуть позже.
// ...
namespace tools {
class Numeric {
// ...
friend std::string ::convert();
};
}
Ошибка тут в том, что компилятор парсит этот код как std::string::convert, как правильно заметил ztonix в комментариях. К сожалению избавиться от :: нельзя, т.к. без точек мы декларируем функцию tools::convert и пометим её как friend.
Решением проблемы будет использовать скобки для выделения имени функции:
friend std::string (::convert)();Стоит отметить, что со встроенными типами таких проблем нет. Компилятор однозначно воспринимает friend int ::convert();