Параметр шаблона CArray и const - PullRequest
0 голосов
/ 10 июня 2009

Можно ли использовать параметр const для CArray

Я сейчас использую CArray вот так, но он не скомпилируется:

typedef CArray<const CString, const CString&> data_container;

И я всегда получаю эту ошибку компиляции:

ошибка C2664: 'ATL :: Checked :: memcpy_s' : невозможно преобразовать параметр 1 из 'const CString *' в 'void *'

Ответы [ 2 ]

2 голосов
/ 10 июня 2009

Код, который использует CArray, ожидает, что ваш TYPE будет неконстантным, поэтому он может быть преобразован в void * (как отмечено в сообщении об ошибке компиляции).

Вы можете хранить константные CString-указатели, которые при разыменовании дают вам константную CS-строку. У вас есть бремя выделения / очистки этой памяти сейчас. Альтернатива состоит в том, чтобы обернуть CString в простой класс, который имеет функцию «GetString», которая возвращает константную ссылку на свой внутренний экземпляр CString.

0 голосов
/ 10 июня 2009

Видимо нет. Зачем тебе это делать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...