使用 MFC 实现队列的正确方法
Proper way to implement Queue with MFC?
我想做的是;在多线程环境中的文本文件中存储一些字符串值。然后,我将每个字符串值存储在队列中,然后逐步读取该队列并将该值写入文本文件。
我在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* >
请注意:但即使比你的代码也非常危险。在示例中,您将创建一个指向堆栈上存在的变量的指针。如果函数存在,指针将失效...
相关文章:
- 为不同配置设置MSVC_RUNTIME_LIBRARY的正确方法是什么
- 通过方法访问结构
- C++优先级队列,按对象的唯一指针的特定方法升序排列
- 按对象的特定方法按升序排列的C++优先级队列
- C++数组队列实现方法错误
- EnQueue 方法在循环队列中未正确返回C++?
- 从队列返回对象的最快方法,但前提是队列有它
- 是否有一种有效的方法来搜索队列中的关键字并覆盖其值
- 使用 lambda 比较初始化优先级队列的方法
- 队列类的取消排队方法"Aborted (core dumped)"错误
- 有什么方法可以清除诅咒的事件队列吗?
- 在 Mac 上的 Xcode 中使用 C++ 中的堆栈、队列和链表的最简单方法是什么?
- 在另一个类中调用一个类(队列)的方法
- 从使用链表实现的队列中弹出最大节点的最有效方法是什么?C++
- 视觉提升 条件变量中的同步队列C++不通知其他线程上的等待类方法
- 线程安全队列是一种好方法吗?
- 是否有一种方法来队列线程
- 混淆了定义自定义优先级队列和使用C++中的make_heap等方法初始化堆之间的区别
- 使用 MFC 实现队列的正确方法
- c++有一种方法可以将优先级队列元素复制到vector中,这样就可以对其进行迭代以检查是否有重复项