gpt4 book ai didi

c++ - 如果我使用 CStringArray 作为方法的参数,为什么不能编译

转载 作者:搜寻专家 更新时间:2023-10-31 02:12:35 25 4
gpt4 key购买 nike

这是 C++ Win32 程序。我做了一个方法,但是这个没有编译。

我预计问题的原因是使用 CStringArray 作为方法的参数。

Ipc3dxContainerPtr KmCdmMakeMultiProjectAction::FindLastFolder
(Ipc3dxContainerListPtr folderList, CStringArray folderNameArr)
{
Ipc3dxContainerPtr folder = NULL;
// skip other process
return folder;
}

This Called by this.

Ipc3dxContainerPtr folder = FindLastFolder(folderList, s_ForlderName);

我能得到一些建议吗?谢谢。

最佳答案

Ipc3dxContainerPtr KmCdmMakeMultiProjectAction::FindLastFolder
(Ipc3dxContainerListPtr folderList, CStringArray folderNameArr)

CStringArray folderNameArr 按值传递。这将触发 CStringArray 的复制构造函数,它会尝试复制它的基类 CObject,而 CObject 无法复制,因为它的复制构造函数是private 专门用于防止复制。在 C++11 和更新版本中,复制构造函数将被deleted,很可能会让您更容易理解错误消息。

解决方案:通过引用传递:CStringArray & folderNameArr 如果您不想在函数内部更改 folderNameArr,请使用 const CStringArray & folderNameArr。如果您想更改参数的拷贝,而不是原始参数,请为它创建一个新的 CStringArrayCStringArray::Append folderNameArr

关于c++ - 如果我使用 CStringArray 作为方法的参数,为什么不能编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42499159/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com