Следующий код заставляет бесконечно печатать адрес памяти res. Я пытаюсь разыменовать переменную "res", чтобы она печатала m_val. Вы знаете, почему он печатает бесконечно?
class Resource
{
private:
int m_val;
public:
Resource(int val) {
m_val = val;
}
~Resource() { }
friend std::ostream& operator<<(std::ostream& out, const Resource &res)
{
out << &res << ": " << res << "\n";
return out;
}
};
int main()
{
std::unique_ptr<Resource> res(new Resource(5));
if (res) {
std::cout << "*res: " << *res; //trying to dereference
}
return 0;
}
Вот другие вещи, которые я пытался напечатать вместо "* (& res)" в операторе печати:
- * res - это говорит "незаконное косвенное обращение"
- m_val - он говорит "недопустимая ссылка на нестатический член 'Resource :: m_val'"
- * & res - с этим он тоже работает бесконечно