自定义类:
class A
{
public:
A();
~A();
int set(A a,int b);
private:
int num;
};
如何才能实现类A能继承CList的功能。
class A
{
public:
A();
~A();
int set(A a,int b);
private:
int num;
};
如何才能实现类A能继承CList的功能。
解决方案 »
- 关于网络编程重叠IO模型的2个问题
- 谁有VC++的基于MFC对话框的Socket通讯的代码,主要是完成服务器和客户端的发送和接受数据。
- TFTP协议数据包大小可以更改么?
- 捕获托盘的消息?
- 想做成如下界面,该如何做呢?
- 向众人请教一个关于gethostbyaddr()函数的问题
- 一个很让人费解的问题???
- 创建udp能向ping 不能的地址发信息而不返回SOCKET_ERROR吗?
- 创建一个较复杂的公式编写界面,存储数据库,调用公式进行数值计算
- 如何通过VC创建“宽带连接”的桌面快捷方式? 求教
- 秒表功能的程序编写
- 已安装并配置好winpcap,但pcap_findalldevs_ex返回-1
再将你学要的功能加到你新建的类里
class A :public CList<int,int>
{
public:
A();
~A();
int set(A a,int b);
private:
int num;
};
可以这么用
CList <int,int&> a;
让你写的类A继承CList,如:
class A :public CList<int,int>
{
public:
A();
~A();
int set(A a,int b);
private:
int num;
};
所以又再次问同样的问题了。
能不能在这里举一个具体的在MFC中的实现。
1楼和2楼的方法我没行通。
我主要是想知道这两个INT或者是否可能又更多的类型?我在什么地方会用到呢?
3楼的代码编译可以通过,但是不知道怎么用在我看来CList就是一个用于建立链表的类。链表的节点可以是整数,也可以是其它类型,如下面的例子。具体请参考MSDN上CList类的帮助。CList <float,float&> g_f;
CList <CPoint,CPoint&> g_point;... POSITION pos;
float f=12.4f;
g_f.AddTail(f); pos=g_f.GetHeadPosition();
TRACE("%f\n",g_f.GetAt(pos)); CPoint pt(10,20);
g_point.AddTail(pt); pos=g_point.GetHeadPosition();
TRACE("x:%d,y:%d\n",g_point.GetAt(pos).x,g_point.GetAt(pos).y);
我现在在MFC又如下实现,但是输出却又乱码,麻烦大家看看。
WORKINFO.H
class WORKINFO
{
public:
WORKINFO();
WORKINFO(int i);
virtual ~WORKINFO();
private:
int num;
};
WORKINFO.CPPWORKINFO::WORKINFO()
{
};
WORKINFO::WORKINFO(int i)
{
num=i;
};
WORKINFO::~WORKINFO()
{
};
CMyListDlg.cpp
#include <afxtempl.h>
#include "WORKINFO.h"
CList<WORKINFO,WORKINFO&> a;
void CMylistboxDlg::OnButton1() //向链表中添加数据
{
for(int i=0;i<5;i++)
{
a.AddTail(WORKINFO(i));
}
}
void CMylistboxDlg::OnShow() //在LISTBOX显示链表中的数据
{
CString str;
POSITION pos = a.GetHeadPosition(); for (int i=0;i < a.GetCount();i++)
{
str.Format("%s",a.GetNext(pos));
//TRACE("%s\r\n", (LPCSTR) myList.GetNext(pos));
m_listbox.AddString(str);//输出为乱码
}
}
改为str.Format("%i",a.GetNext(pos));
输出也不正确。
CList的成员函数返回的是对象的引用,所以在类中定义了一个GetNum()成员函数,那么改为
str.Format("%i",a.GetNext(pos).GetNum());就正确。