map<CString,CStringList> m;
CStringList cStringList;
cStringList.AddTail("ff1");
cStringList.AddTail("ff2");
cStringList.AddTail("3");
m.insert(map<CString,CStringList>::value_type("CLogInDlg",cStringList));怎么不行的?
CStringList cStringList;
cStringList.AddTail("ff1");
cStringList.AddTail("ff2");
cStringList.AddTail("3");
m.insert(map<CString,CStringList>::value_type("CLogInDlg",cStringList));怎么不行的?
LogInDlg.cpp
D:\workstation\mfc_workstation\SrvRevData\Client\LogInDlg.cpp(103) : warning C4786: 'std::reverse_bidirectional_iterator<std::_Tree<CString,std::pair<CString const ,CStringList>,std::map<CString,CStringList,std::less<CString>,std::allocator<CStringL
ist> >::_Kfn,std::less<CString>,std::allocator<CStringList> >::iterator,std::pair<CString const ,CStringList>,std::pair<CString const ,CStringList> &,std::pair<CString const ,CStringList> *,int>' : identifier was truncated to '255' characters in the
debug information
D:\workstation\mfc_workstation\SrvRevData\Client\LogInDlg.cpp(103) : warning C4786: 'std::reverse_bidirectional_iterator<std::_Tree<CString,std::pair<CString const ,CStringList>,std::map<CString,CStringList,std::less<CString>,std::allocator<CStringL
ist> >::_Kfn,std::less<CString>,std::allocator<CStringList> >::const_iterator,std::pair<CString const ,CStringList>,std::pair<CString const ,CStringList> const &,std::pair<CString const ,CStringList> const *,int>' : identifier was truncated to '255'
characters in the debug information
D:\workstation\mfc_workstation\SrvRevData\Client\LogInDlg.cpp(103) : warning C4786: 'std::pair<std::_Tree<CString,std::pair<CString const ,CStringList>,std::map<CString,CStringList,std::less<CString>,std::allocator<CStringList> >::_Kfn,std::less<CSt
ring>,std::allocator<CStringList> >::iterator,std::_Tree<CString,std::pair<CString const ,CStringList>,std::map<CString,CStringList,std::less<CString>,std::allocator<CStringList> >::_Kfn,std::less<CString>,std::allocator<CStringList> >::iterator>' :
identifier was truncated to '255' characters in the debug information
D:\workstation\mfc_workstation\SrvRevData\Client\LogInDlg.cpp(103) : warning C4786: 'std::pair<std::_Tree<CString,std::pair<CString const ,CStringList>,std::map<CString,CStringList,std::less<CString>,std::allocator<CStringList> >::_Kfn,std::less<CSt
ring>,std::allocator<CStringList> >::const_iterator,std::_Tree<CString,std::pair<CString const ,CStringList>,std::map<CString,CStringList,std::less<CString>,std::allocator<CStringList> >::_Kfn,std::less<CString>,std::allocator<CStringList> >::const_
iterator>' : identifier was truncated to '255' characters in the debug information
c:\program files\microsoft visual studio\vc98\include\utility(21) : error C2558: class 'CStringList' : no copy constructor available
c:\program files\microsoft visual studio\vc98\include\utility(21) : while compiling class-template member function '__thiscall std::pair<class CString const ,class CStringList>::std::pair<class CString const ,class CStringList>(const class C
String &,const class CStringList &)'
Generating Code...
Compiling...
Client.cpp
Generating Code...
Compiling...
ClientDoc.cpp
ClientView.cpp
MainFrm.cpp
Public.cpp
ClientSocket.cpp
D:\workstation\mfc_workstation\SrvRevData\Client\ClientSocket.cpp(65) : error C2065: 'mapList' : undeclared identifier
D:\workstation\mfc_workstation\SrvRevData\Client\ClientSocket.cpp(65) : error C2228: left of '.size' must have class/struct/union type
Generating Code...
Error executing cl.exe.Client.exe - 3 error(s), 4 warning(s)
这一句话决定了一切,因为CStringList是从CObject派生而来,
而在CObject里将拷贝构造和赋值运算符都定义为私有成员方法,这导至了CStringList无法拷贝构造和赋值,如下:
(从MFC中摘录)
protected:
CObject();
private:
CObject(const CObject& objectSrc); // no implementation
void operator=(const CObject& objectSrc); // no implementation而在map<CString,CStringList>m;里面,插入时,是需要执行CStringList的拷贝构造的。
CStringList cStringList;
cStringList.AddTail("ff1");
cStringList.AddTail("ff2");
cStringList.AddTail("3");
m.insert( std::map <CString,CStringList*>::value_type("CLogInDlg",&cStringList));
这样不知道行不行。
这样放很危险,这个cStringList临时了,楼主注意一下,CStringList* pStrList = new CStringList();
m不用了后的时候注意遍历delete CStringList*。