我试图从一个函数返回一个CArray,并试图从另一个类中调用该函数

short ListMaker::RetArray(CString szName, CArray<CString, CString&> &szarr_Names) {
    szarr_Names.Add(szName);
    return 0;
}
int main() {
    //..
    CArray<CString, CString&> myArray;
    ListMaker LM;
    short nCode = LM.RetArray(L"Name", myArray);
    //..
}

我收到以下错误:

Error   1   error C2664: 'RetArray' : cannot convert parameter 2 from 'CArray<TYPE,ARG_TYPE>' to 'CArray<TYPE,ARG_TYPE>'
Error   2   error C2511: 'short RetArray(CString,CArray<TYPE,ARG_TYPE> &)' : overloaded member function not found in 'ListMaker'

请告诉我定义和访问CArray返回值的正确方法。

最佳答案

Erm,如果RetArrayListMaker类的成员,并且首先从main()调用它,那么您就不能这样称呼它:short nCode = RetArray(L"Name", myArray);
如果RetArray是静态成员,请使用short nCode = ListMaker::RetArray(L"Name", myArray);。它是非静态的,使用实例short nCode = listMakerInstance.RetArray(L"Name", myArray);

检查您的头文件中RetArray类中的ListMaker声明。它可能与cpp文件中的实现有所不同,因此会出现C2511错误。

10-04 12:42