如果我使用 CStringArray 作为方法的参数,为什么无法编译
Why cant compile if i use CStringArray as method's argument
这是C Win32程序。我已经制作了一种方法,但没有编译。
我期望问题的原因是将Cstringarray用作方法的参数。
Ipc3dxContainerPtr KmCdmMakeMultiProjectAction::FindLastFolder
(Ipc3dxContainerListPtr folderList, CStringArray folderNameArr)
{
Ipc3dxContainerPtr folder = NULL;
// skip other process
return folder;
}
,这是由此调用的。
Ipc3dxContainerPtr folder = FindLastFolder(folderList, s_ForlderName);
我可以得到一些建议吗?谢谢。
in
Ipc3dxContainerPtr KmCdmMakeMultiProjectAction::FindLastFolder
(Ipc3dxContainerListPtr folderList, CStringArray folderNameArr)
CStringArray folderNameArr
按值传递。这将触发CStringArray
的复制构造函数,该复制构造函数将尝试复制其基类,CObject
,并且CObject
无法复制,因为其复制构造函数是private
专门用于防止复制的。在C 11和更新的中,复制构造函数将为delete
D,很可能会给您更容易理解错误消息。
解决方案:通过参考:CStringArray & folderNameArr
如果您不希望在功能内更改folderNameArr
,请使用const CStringArray & folderNameArr
。如果要更改参数的副本,而不是原始参数,请将新的CStringArray
和CStringArray::Append
folderNameArr
对其进行。
好吧,您将folderList
声明为object
,并尝试在这里使用它,
Ipc3dxContainerPtr folder = NULL; <-- Error Here
而不是pointer to object
。如果未设置class
来处理这种情况,则compilation
error
可能来自class
中的处理。
同样适用于为什么
Ipc3dxContainerPtr folder = FindLastFolder(folderList, s_ForlderName);
不起作用。因此,基本上只是将folderList
更改为*folderList
。
首先对不起,解释还不够。并解决了这个。
void KmCdmMakeMultiProjectAction::MethodA()
{
CStringArray s_ForlderName;
s_ForlderName.Add("Hi");
Ipc3dxContainerListPtr folderList = cabinet->GetContainerList();
Ipc3dxContainerPtr folder = FindLastFolder(folderList, s_ForlderName);
}
Ipc3dxContainerPtr KmCdmMakeMultiProjectAction::FindLastFolder
(Ipc3dxContainerListPtr folderList, CStringArray folderNameArr)
{
Ipc3dxContainerPtr folder = NULL;
// skip other process
folder = (Ipc3dxContainerPtr)folderList->GetItem(0)
return folder;
}
失败的源。我可以通过这样的编辑解决。
Ipc3dxContainerPtr KmCdmMakeMultiProjectAction::FindLastFolder
(Ipc3dxContainerListPtr folderList, CStringArray& folderNameArr)
{
\CStringArray folderNameArr -> CStringArray& folderNameArr
}
我仍然不知道为什么会发生这个问题。因为我不了解C 的基本理论。无论如何我解决了这个问题。
需要被人们引用的问题,谢谢。
相关文章:
- 如果有一个模板构造函数只有一个泛型参数,为什么我必须有一个复制构造函数
- 在C++中传递给函数时,为什么要指定数组大小作为参数
- 为什么 std::function 可以作为 std::not2 的参数?
- 当给定默认值时,为什么此模板参数推导失败
- 非类型指针和引用模板参数,以及在编译时如何/为什么解析它们.c++
- 为什么默认复制函数在按值发送参数时不调用?
- 为什么 std::绑定错误参数可以成功?
- 模板参数列表中的 false 在模板初始化期间计算为什么?
- 为什么我们不能重复使用具有不同模板参数的别名模板标识符?
- 为什么模板参数推导失败?
- 为什么我需要在成员发起器列表中重复基类的模板参数?
- 为什么我不能将引用作为 std::async 的函数参数传递
- 为什么可变参数函数不适用于模板
- 为什么即使我调用参数化构造函数也会调用默认构造函数?
- 为什么这个噪声函数不处理否定参数?
- 不可能:此指针作为默认参数.为什么
- 默认模板参数:为什么编译器抱怨没有指定模板参数
- C++数组作为参数 - 为什么只需要指定"outer"维度
- 函数重载std::函数参数:为什么从未调用const方法
- 使用 std::enable_if 作为 templ 时的默认模板参数.参数:为什么可以使用两个仅在enable_if参