我想要做的是; 在多线程环境中将一些字符串值存储在文本文件中。 然后我将每个字符串值存储在一个队列中,然后逐步读取该队列并将这些值写入文本文件。
我在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中实现Queue的最佳方法是什么?
答案 0 :(得分:1)
CString不是对象或更好:它不是从CObject派生的。但是你说列表应该来自CObList。你必须使用CPtrList。
class CQueue :public CTypedPtrList < CPtrList, CString* >
请注意:但即使你的代码非常危险。在您的示例中,您将创建指向堆栈中存在的变量的指针。如果函数存在,则指针变为无效...