CArray 和 const 模板参数

发布于 2024-07-23 10:11:06 字数 312 浏览 3 评论 0原文

是否可以对 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

半边脸i 2024-07-30 10:11:06

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.

何时共饮酒 2024-07-30 10:11:06

显然没有。 你为什么想这么做?

Apparently no. Why would you want to do that?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文