本文实例讲述了C++简单列表类的实现方法。分享给大家供大家参考。具体方法如下:
_AFXTLS.CPP文件如下:
//#include "StdAfx.h #include <stddef.h> #include <stdio.h> #include "_AFXTLS_.H" struct MyThreadData{ MyThreadData* pNext; int nShortData; }; void CSimpleList::AddHead(void *p) { *GetNextPtr(p)=m_pHead; m_pHead = p; } BOOL CSimpleList::Remove(void* p) { BOOL bRet = FALSE; if (p == NULL) { bRet = FALSE; } if (p == m_pHead) { m_pHead = GetNext(m_pHead); bRet = TRUE; } else { void* pTest; pTest = m_pHead; while (pTest && (GetNext(pTest) != p)) { pTest = GetNext(pTest); } if (pTest != NULL) { *GetNextPtr(pTest) = GetNext(p); bRet = TRUE; } } return bRet; } void main() { MyThreadData* pData; CSimpleList list; list.Construct(offsetof(MyThreadData, pNext)); for (int i=0;i<10;i++) { pData = new MyThreadData; pData->nShortData = i; list.AddHead(pData); } //遍历链表,释放MyThreadData对象占用的空间 pData = (MyThreadData*)list.GetHead(); while(pData != NULL) { MyThreadData* pNextData = pData->pNext; printf("The value is %d\n",pData->nShortData); delete pData; pData = pNextData; } }
_AFXTLS_.H文件如下:
//#include "StdAfx.h #ifndef __AFXTLS_H__ #define __AFXTLS_H__ #include <Windows.h> class CSimpleList { public: CSimpleList(int nNextOffset=0); void Construct(int nNextOffset); //接口 BOOL IsEmpty() const; void AddHead(void *p); void RemoveAll(); void* GetHead() const; void* GetNext(void* preElement) const; BOOL Remove(void* p); //为实现接口所需的成员 void *m_pHead; size_t m_nextOffset; void** GetNextPtr(void* preElement) const; }; //类的内联函数 inline CSimpleList::CSimpleList(int nNextOffset) {m_pHead = NULL; m_nextOffset = nNextOffset; } inline void CSimpleList::Construct(int nNextOffset) {m_nextOffset = nNextOffset; } inline BOOL CSimpleList::IsEmpty() const { return m_pHead==NULL; } //inline void AddHead(void *p) //{ // //} inline void CSimpleList::RemoveAll() { m_pHead = NULL; } inline void* CSimpleList::GetHead() const { return m_pHead; } inline void* CSimpleList::GetNext(void* preElement) const { return *GetNextPtr(preElement); } //inline BOOL CSimpleList::Remove(void* p) //{ // //} inline void** CSimpleList::GetNextPtr(void* preElement) const { return (void**)((BYTE*)preElement+m_nextOffset); } #endif
希望本文所述对大家的C++程序设计有所帮助。
我是一个使用NUnit集成测试Asp Core2.2的新手,我已经有了核心RESTful Api,但不知道如何配置NUnit来实现集成测试。通常,我使用Migration文件夹中的配置文件实现它,如下所示,但在ASP Core2.2中不存在,我不知道有什么新的替代方案。 所以,如果你不明白我的问题,我只需要一个明确的链接,使用NUnit集成测试与.NET Core2.2。
我在我的项目中使用Selenium与C#和MS测试框架进行自动化。我使用了有序测试...在有序测试中添加了一些测试并执行了它,但它失败了,因为它无法打开浏览器。 我已经在属性中把我的浏览器打开和URL打开代码放在一个类中,但没有放在属性中,所以我不能在有序测试中添加那些浏览器初始化方法。 我想优先考虑来自不同.cs类的不同方法。
我有一个接口,例如: 以及我试图测试的该接口的几个实现(例如、、)。 我的许多测试方法实际上是为了确保接口被正确实现,因此在每个实现中都是重复的。在JUnit3中,一个常见的解决方案是创建一个基类(扩展),然后由每个实现类对其进行子类化。但是对于JUnit4来说,这是正确的方法吗? 在(我相信)优先顺序的升序中可能的选择: > 剪切'n'粘贴重复的测试方法。一点也不枯燥,但我想测试中的担忧比生产代
本文向大家介绍C语言栈的表示与实现实例详解,包括了C语言栈的表示与实现实例详解的使用技巧和注意事项,需要的朋友参考一下 1.基本概念: C语言的栈是指限定仅在表尾进行插入和删除操作的线性表。 栈作为C语言中一种常用的数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一
4.3.5 自底向上实现与单元测试 自顶向下设计设计是创建层次化的模块结构的过程,而从实现的角度看,我们又是采取了相反的过程,即自底向上的实现。从结构图的底层开始实现每一个函数,然后上一层模块 自然得到实现。就这样自底向上,直至主程序得到完全的实现。 在模块化编程中,测试程序最适合采用单元测试技术,即先分别测试每一个小模块,然 后再逐步测试较大的模块,直至最后测试完整程序。以 calendar 程
null