gpt4 book ai didi

c++ - 使用 MFC 实现队列的正确方法?

转载 作者:行者123 更新时间:2023-11-28 05:35:46 28 4
gpt4 key购买 nike

我想要做的是; 在多线程环境中将一些字符串值存储在文本文件中。然后我将每个字符串值存储在队列中,然后逐步读取该队列并将该值写入文本文件。

我在 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* >

请注意:但即使比你编写代码也很危险。在您的示例中,您创建了一个指向堆栈中存在的变量的指针。如果该函数存在,指针将变得无效...

关于c++ - 使用 MFC 实现队列的正确方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38328476/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com