내가하고 싶은 것은; 다중 스레드 환경에서 텍스트 파일에 일부 문자열 값을 저장합니다. 그런 다음 각 문자열 값을 대기열에 저장 한 다음 해당 대기열을 단계별로 읽고 해당 값을 텍스트 파일에 씁니다.
MSDN 에서 큐 에 대한 몇 가지 예를 보았습니다 . 이 예제에서 값을 저장 CString
하기 위해 일부 변경하고이 코드 세그먼트를 만들었지 만이 코드에서는이를 달성 할 수 없습니다.
class CQueue :public CTypedPtrList < CObList, CString* >
{
public:
void AddToEnd(CString* newLog) {
AddTail(newLog);
}
CString* GetFromFront() {
return IsEmpty() ? NULL : RemoveHead();
}
};
그런 다음 다음과 같이 전화하려고합니다.
CQueue q;
CString str("data1");
q.AddToEnd(&str);
이 오류가 발생합니다.
'void CObList::AddTail(CObList *)' : cannot convert argument 1 from 'ATL::CStringT<wchar_t,StrTraitMFC_DLL<wchar_t,ATL::ChTraitsCRT<wchar_t>>> ' to 'CObject *'
MFC에서 큐를 구현하는 가장 좋은 방법은 무엇입니까?
CString은 개체가 아니거나 더 좋습니다. CObject에서 파생되지 않습니다. 그러나 목록은 CObList에서 파생되어야한다고 말했습니다. 대신 CPtrList를 사용해야합니다.
class CQueue :public CTypedPtrList < CPtrList, CString* >
참고 : 그러나 코딩하는 것보다 매우 위험합니다. 샘플에서 스택에있는 변수에 대한 포인터를 만듭니다. 함수가 존재하면 포인터가 무효화됩니다 ...
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다