Я пытаюсь понять синтаксис boost::scoped_ptr
. Давайте определим и записать в стандартный вывод scoped_ptr
указатель, а также значение, которое она указывает на:Что такое значение boost :: scoped_ptr pointer?
#include <boost/scoped_ptr.hpp>
#include <iostream>
int main()
{
boost::scoped_ptr<int> p{new int{1}};
std::cout << p.get() << '\n'; // ok
std::cout << p << '\n'; // error
std::cout << *p.get() << '\n'; // ok
std::cout << *p << '\n'; // ok. *p==*p.get()
}
вопрос. Почему *p.get()==*p
и еще std::cout << p << '\n';
не компилируются?
Я работаю on g++ -std=c++11 -O2 -Wall -pedantic
.
Вопрос 1, как имеющие: 'INT * р;' и спрашивать, почему 'p' не равна на '& p'. Почему адрес указателя будет равен адресу, сохраненному в нем? – Borgleader
Если у вас есть C++ 11, предпочитайте 'std :: unique_ptr'' boost :: scoped_ptr'. –
@Borgleader: Спасибо, я отредактировал сообщение. –