e:\Microsoft Visual Studio .NET\Vc7\atlmfc\include\afxtempl.h(500): error C2582: 'operator =' function is unavailable in 'CArray<TYPE,ARG_TYPE>'
with
[
TYPE=int,
ARG_TYPE=int
]
которая ссылается на последнюю строчку в приведенной ниже функции из файла afxtempl.h
K>e:\Microsoft Visual Studio .NET\Vc7\atlmfc\include\afxtempl.h(500): error C2582: 'operator =' function is unavailable in 'CArray<TYPE,ARG_TYPE>'
K> with
K> [
K> TYPE=int,
K> ARG_TYPE=int
K> ]
...
K>В чем проблема и как ее можно исправить?
Проблема в том что CArray<...> наследуеться от CObject, в котором запрещен оператор '=' и конструктор копирования. Соответственно и CArray<...> их тоже не имеет. Проблема проявляеться даже на более простом примере:
Что посоветовать, не знаю, так как MS классы типа CArray не использую. Если не нужна такая жесткая привязка к этим классам, то может просто попробовать STL.
Здравствуйте, comer, Вы писали:
C>Что посоветовать, не знаю, так как MS классы типа CArray не использую. Если не нужна такая жесткая привязка к этим классам, то может просто попробовать STL.
Я бы сказал что ATL контейнеры лучше вобще не использовать. Корявость страшная.
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re: Проблема с СArray (при попытке создать массив массивов
Если же по каким-то причинам нуэно использовать именно CArray, то можно поступить так:
реализовать proxy-класс, который бы содержал объект типа CArray и определял бы operator =, operator[] и конструктор копии, и использовать этот proxy-класс в качестве элементов CArray "верхнего уровня" .
А еще можно воспользоваться поиском про "Многомерные массивы" — эта тема обсуждалась несколько раз.
Любите книгу — источник знаний (с) М.Горький
Re[3]: Проблема с СArray (при попытке создать массив массив
Вообще то это больше похоже на MFC контейнер. Ну да не суть важно. На самом деле в некоторых случаях их вполне хватает. А STL тащит за собой msvcp60.dll, что очень неприятно.
WH>>Я бы сказал что ATL контейнеры лучше вобще не использовать. Корявость страшная.
ME>Согласен. Ацтой редкостный (это касается и всех плюсовых библиотек от microsoft).
Здравствуйте, Andrew S, Вы писали:
AS>Вообще то это больше похоже на MFC контейнер. Ну да не суть важно. На самом деле в некоторых случаях их вполне хватает. А STL тащит за собой msvcp60.dll, что очень неприятно.
Это потоки тянут. Контейнеры и алгоритмы все в хедерых.
Re[2]: Проблема с СArray (при попытке создать массив массив
Здравствуйте, Bell, Вы писали:
B>Если же по каким-то причинам нуэно использовать именно CArray, то можно поступить так: B>реализовать proxy-класс, который бы содержал объект типа CArray и определял бы operator =, operator[] и конструктор копии, и использовать этот proxy-класс в качестве элементов CArray "верхнего уровня" .
А boost::shared_ptr не подойдет в качестве такого прокси?
... << RSDN@Home 1.1 beta 2 >>
Re[5]: Проблема с СArray (при попытке создать массив массив
Здравствуйте, Andrew S, Вы писали:
AS>Вообще то это больше похоже на MFC контейнер. Ну да не суть важно. На самом деле в некоторых случаях их вполне хватает. А STL тащит за собой msvcp60.dll, что очень неприятно.
А можно узнать в каком месте стандарта это написано?
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, Аноним, Вы писали:
WH>>А можно узнать в каком месте стандарта это написано? А>Причем здесь стандарт?
А при том что STL описана в стандарте.
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[8]: Проблема с СArray (при попытке создать массив массив
От:
Аноним
Дата:
26.09.03 11:21
Оценка:
Здравствуйте, WolfHound, Вы писали:
WH>А при том что STL описана в стандарте.
Какое отношение это утверждение имеет к тому, что "...STL тащит за собой msvcp60.dll, что очень неприятно"?
Re[3]: Проблема с СArray (при попытке создать массив массив