Re[2]: экспортирование класса с членом типа vector<auto_ptr<
От: MaximE Великобритания  
Дата: 16.02.05 16:00
Оценка: 4 (1) :)
valker wrote:

> Насколько мне известно, класть std::auto_ptr в контейнеры вообще не рекомендуется (ака запрещено)....


Вопрос для интервью:

— Как в коде запретить пихать в вектор автопоинтеры?

Ответ:

namespace std {

template<class T, class A> class vector<auto_ptr<T>, A>;

}


--
Maxim Yegorushkin
Posted via RSDN NNTP Server 1.9
Re[2]: экспортирование класса с членом типа vector<auto_ptr<
От: Николай Ганичев Россия  
Дата: 17.02.05 07:19
Оценка: :)
Здравствуйте, Awaken, Вы писали:

A>в VC++ 7.x для этого есть ATL::CAutoPtrArray<>


— Чем плох ATL::CAutoPtrArray<>?
— В исполнении этого smart-poiner имеется одна критическая, неустранимая ошибка: его написал не я.

Мешать STL и ATL... Хорошо ли?
... << RSDN@Home 1.1.4 @@subversion >>
Re[3]: экспортирование класса с членом типа vector<auto_ptr<
От: Awaken Украина  
Дата: 17.02.05 11:17
Оценка: +1
НГ>Мешать STL и ATL... Хорошо ли?

у него из STL используется только vector и auto ptr. если она нужна только из-за этого,
то STL в помойку, в ATL есть свои гораздо более удобные смарт-пойнтеры (аж 4 вида вместо одного!)
если же весь проект сильно завязан на STL то нужно что-то из boost например shared_ptr
экспортирование класса с членом типа vector<auto_ptr<int> >
От: utyf  
Дата: 16.02.05 13:49
Оценка:
Доброе время суток!
Пишу dll на Visual C++ 7.0. В проекте есть экспортируемый класс с членом типа vector<auto_ptr<int> >, класс не компилится (Compiler Error C2558). Вот исходник:
// file A.h
#pragma once

#ifdef MYLIB_EXPORTS
#define MYLIB_API __declspec(dllexport)
#else
#define MYLIB_API __declspec(dllimport)
#endif

#include <vector>
#include <memory>

using std::vector;
using std::auto_ptr;

class MYLIB_API A
{

  vector<auto_ptr<int> > v;

};


Если класс не экспортировать, то компилится.
...

class A
{

  vector<auto_ptr<int> > v;

};


Как экспортировать такой класс? Спасибо.
Re: экспортирование класса с членом типа vector<auto_ptr<int
От: valker  
Дата: 16.02.05 14:00
Оценка:
Здравствуйте, utyf, Вы писали:

U>Доброе время суток!

U>Пишу dll на Visual C++ 7.0. В проекте есть экспортируемый класс с членом типа vector<auto_ptr<int> >, класс не компилится (Compiler Error C2558). Вот исходник:
U>[code]
U>// file A.h
U>#pragma once


U>Как экспортировать такой класс? Спасибо.


Насколько мне известно, класть std::auto_ptr в контейнеры вообще не рекомендуется (ака запрещено)....
Re: экспортирование класса с членом типа vector<auto_ptr<int
От: sadomovalex Россия http://sadomovalex.blogspot.com
Дата: 16.02.05 14:00
Оценка:
Здравствуйте, utyf, Вы писали:

U>Как экспортировать такой класс? Спасибо.


Нельзя stl-ный auto_ptr использовать в качестве элемента контейнера, т.к. последний не отвечает требованиям к элементам контейнеров: после копирования и присваивания auto_ptr источник и приемник не эквивалентны
"Что не завершено, не сделано вовсе" Гаусс
Re: экспортирование класса с членом типа vector<auto_ptr<int
От: Awaken Украина  
Дата: 16.02.05 14:20
Оценка:
Здравствуйте, utyf, Вы писали:

U>Доброе время суток!

U>Пишу dll на Visual C++ 7.0. В проекте есть экспортируемый класс с членом типа vector<auto_ptr<int> >, класс не компилится (Compiler Error C2558). Вот исходник:

и правильно ругается. не используй auto_ptr в таком контексте.
в VC++ 7.x для этого есть ATL::CAutoPtrArray<>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.