Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.08.2010, 10:50   #1
mikepc
Новичок
Джуниор
 
Регистрация: 24.08.2010
Сообщений: 2
По умолчанию Проблема с инициализацией shared_ptr

Всем привет!

Имеется некий класс:
Код:
class Agent
{
private:
     string Name;
     .....
public:
     explicit Agent(const string& AgentName):
     Name(AgentName)
     {};
     .....
}
Необходимо объявить умный указатель на объект этого класса:
Код:
shared_ptr<Agent> Agent1;
И проинициализировать его только после получения его имени из ini-файла:
Код:
Agent1(new Agent(name));
При этом комплилятор Visual Studio начинает ругаться:
error C2664: 'void (__cdecl *)(boost::shared_ptr<T> ***)' : cannot convert parameter 1 from 'Agent *' to 'boost::shared_ptr<T> ***'

Видимо, это связано с тем, что при объявлении
Код:
shared_ptr<Agent> Agent1;
уже вызывается конструктор shared_ptr (без аргументов). Можно как-нибудь разрулить данную ситуацию?
mikepc вне форума Ответить с цитированием
Старый 24.08.2010, 12:21   #2
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

1. инициализировать Agent1 в списках инициализации, если конечно он объявлен у тебя в классе. иначе инициализируй сразу так
shared_ptr<Agent> Agent1(new Agent(name));
2. вызвать какой нить Agent1.reset(new ...).
не юзал буста, точно не могу сказать
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 25.08.2010, 09:36   #3
mikepc
Новичок
Джуниор
 
Регистрация: 24.08.2010
Сообщений: 2
По умолчанию

Спасибо!
Метод reset(new ...) действительно существует. Проглядел)
mikepc вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с инициализацией массива Catharsis Общие вопросы C/C++ 6 21.05.2010 13:25
прблема с инициализацией буфера серг Общие вопросы C/C++ 4 18.02.2010 19:22
Проблемы с инициализацией com компонента Anekdot Общие вопросы Delphi 4 12.08.2009 14:58
Проблема с рамами/Проблема с ЖД DRAGGER Компьютерное железо 6 04.01.2009 23:37
проблемы с инициализацией графики Teksa Паскаль, Turbo Pascal, PascalABC.NET 4 06.10.2008 18:03