problem on work with Class CArray [modified]
-
Oh wait, you said percent noob - that would be up! :)
"Posting a VB.NET question in the C++ forum will end in tears." Chris Maunder
hehehe :D thanks god I have you guys here and you fill my big holes in C++ programming
-
got 2 function ( second is executed inside first one) how i will pass the CArray class? with my code 1 error : error C2664: 'GetDF' : cannot convert parameter 1 from 'class CArray' to 'class CArray' No copy constructor available for class 'CArray' Error executing cl.exe.
double CAnaktisiDlg::FindDF(CString file , CArray < CString, CString > AFArray) { CString LineRead ; CString str7; CString FilePathName; const int sz =100; char buf[sz]; FilePathName = m_FolderName + file; ifstream FileText(FilePathName); while(FileText.get(buf,sz)) { FileText.get(); LineRead = (LPCSTR) buf; GetDFArray(LineRead); GetDF(AFArray); } FileText.close(); return 0.0; } void CAnaktisiDlg::GetDF(CArray < CString , CString > FArray) { int nDf=0; int niDF = 0; for ( int i = 0 ; i
I have read all the above messages....Great!!!! just want to add one thing since the copy constructor for CArray is explict, therefore you are getting this error.
error C2664: 'GetDF' : cannot convert parameter 1 from 'class CArray' to 'class CArray' No copy constructor available for class 'CArray' Error executing cl.exe.
If constructors are explicit then temporary copies will not be created during parameter passing in function calls. -
got 2 function ( second is executed inside first one) how i will pass the CArray class? with my code 1 error : error C2664: 'GetDF' : cannot convert parameter 1 from 'class CArray' to 'class CArray' No copy constructor available for class 'CArray' Error executing cl.exe.
double CAnaktisiDlg::FindDF(CString file , CArray < CString, CString > AFArray) { CString LineRead ; CString str7; CString FilePathName; const int sz =100; char buf[sz]; FilePathName = m_FolderName + file; ifstream FileText(FilePathName); while(FileText.get(buf,sz)) { FileText.get(); LineRead = (LPCSTR) buf; GetDFArray(LineRead); GetDF(AFArray); } FileText.close(); return 0.0; } void CAnaktisiDlg::GetDF(CArray < CString , CString > FArray) { int nDf=0; int niDF = 0; for ( int i = 0 ; i
I am way late, but Mark Salsbery did not use a single C specific word. Every one was C++ specific, as C does not use direct references (a pointer is an indirect reference). Given a choice between a copy and a reference, use a constant reference unless you want the called function to modify the values passed. If a class is not designed to be passed by value (which you are trying to do) then there is probably a good reason.
INTP "Program testing can be used to show the presence of bugs, but never to show their absence."Edsger Dijkstra