CArray 和 const 模板参数
是否可以对 CArray 使用 const 参数
我目前正在像这样使用 CArray 但它不会编译:
typedef CArray<const CString, const CString&> data_container;
而且我总是收到此编译错误:
错误 C2664:“ATL::Checked::memcpy_s” : 无法将参数 1 转换为 'const CString *' 到 'void *'
Is it possible to use const parameter to CArray
I am currently using CArray like this but it won't compile:
typedef CArray<const CString, const CString&> data_container;
And I always get this compile error :
error C2664: 'ATL::Checked::memcpy_s'
: cannot convert parameter 1 from
'const CString *' to 'void *'
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
CArray 使用的代码期望您的 TYPE 是非常量,因此它可以转换为 void* (如编译错误消息所述)。
您可以存储 const CString 指针,这将在取消引用时为您提供 const CString。 您现在确实有分配/清理该内存的负担。 另一种方法是将 CString 包装在一个简单的类中,该类具有一个“GetString”函数,该函数返回对其内部 CString 实例的 const 引用。
The code that CArray uses expects your TYPE to be non-const, so it can cast to void* (as noted by the compilation error message).
You could store const CString pointers, which would give you a const CString when dereferenced. You do have the burden of allocating/cleaning up that memory now. An alternative is to wrap a CString in a simple class, that has a "GetString" function that returns a const reference to its internal CString instance.
显然没有。 你为什么想这么做?
Apparently no. Why would you want to do that?