CArray和const模板参数

时间:2009-06-10 15:01:08

标签: c++ templates mfc const

是否可以将const参数用于CArray

我目前正在使用这样的CArray,但它无法编译:

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

我总是得到这个编译错误:

  

错误C2664:'ATL :: Checked :: memcpy_s'   :无法转换参数1   'const CString *'到'void *'

2 个答案:

答案 0 :(得分:2)

CArray使用的代码期望您的TYPE是非const的,因此它可以转换为void *(如编译错误消息所述)。

你可以存储const CString指针,这会在解除引用时给你一个const CString。你现在有分配/清理内存的负担。另一种方法是将CString包装在一个简单的类中,该类具有一个“GetString”函数,该函数返回对其内部CString实例的const引用。

答案 1 :(得分:0)

显然没有。你为什么要那样做?