у него из STL используется только vector и auto ptr. если она нужна только из-за этого,
то STL в помойку, в ATL есть свои гораздо более удобные смарт-пойнтеры (аж 4 вида вместо одного!)
если же весь проект сильно завязан на STL то нужно что-то из boost например shared_ptr
экспортирование класса с членом типа vector<auto_ptr<int> >
Доброе время суток!
Пишу 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
Здравствуйте, 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
Здравствуйте, utyf, Вы писали:
U>Как экспортировать такой класс? Спасибо.
Нельзя stl-ный auto_ptr использовать в качестве элемента контейнера, т.к. последний не отвечает требованиям к элементам контейнеров: после копирования и присваивания auto_ptr источник и приемник не эквивалентны
"Что не завершено, не сделано вовсе" Гаусс
Re: экспортирование класса с членом типа vector<auto_ptr<int
Здравствуйте, utyf, Вы писали:
U>Доброе время суток! U>Пишу dll на Visual C++ 7.0. В проекте есть экспортируемый класс с членом типа vector<auto_ptr<int> >, класс не компилится (Compiler Error C2558). Вот исходник:
и правильно ругается. не используй auto_ptr в таком контексте.
в VC++ 7.x для этого есть ATL::CAutoPtrArray<>