求教 typedef定义的一个数组是什么意思

okou0696 2010-04-27 09:21:42
//定义一个结构,sCity为城市名称,sCityAdds为上一级城市名称。例如如sCity为成都市,sCityAdds为四川省
typedef struct _cityadds
{
CString sCity;
CString sCityAdds;
}cityadds;
//这是什么用法?我还没有用到过,查阅基础书,也没有答案。
typedef CArray<cityadds,cityadds&> CCityAddsArray;


请各位老师帮忙解释一下,上一句有什么意义。主要是“<”“>”的意思是什么。

//在VC中,编译提示:TreeDlg.h(15) : error C2143: syntax error : missing ';' before '<'
...全文
350 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
Eleven 2010-04-27
  • 打赏
  • 举报
回复
MSDN:
template < class TYPE, class ARG_TYPE = const TYPE& >
class CArray : public CObject

TYPE
Template parameter specifying the type of objects stored in the array. TYPE is a parameter that is returned by CArray.

ARG_TYPE
Template parameter specifying the argument type used to access objects stored in the array. Often a reference to TYPE. ARG_TYPE is a parameter that is passed to CArray.
okou0696 2010-04-27
  • 打赏
  • 举报
回复
谢谢11楼的WLTG2001。
wltg2001 2010-04-27
  • 打赏
  • 举报
回复
我昨天晚上把好几本书关于类和结构的部分都重读了一遍。
=============
这个是MFC中的,一般书上应该没有,找本MFC书去看,或者直接看MSDN
cdsnpeter 2010-04-27
  • 打赏
  • 举报
回复
typedef 是一个关键字,可以为某个类型取一个别名。
例如typedef CArray<cityadds, cityadds&>CCityAddsArray;
相当于为类型CArray<cityadds, cityadds&>指定一个别名ACityAddsArray;
okou0696 2010-04-27
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 happyparrot 的回复:]
你的知识面太狭窄了......
#include <afxtempl.h>就可以解决了。
[/Quote]

鹦鹉大哥,你就别笑话俺了。没办法啊,不懂就是不懂,装不来的。
翻书翻不到,只有问了。

我昨天晚上把好几本书关于类和结构的部分都重读了一遍。
快乐鹦鹉 2010-04-27
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 yincheng01 的回复:]

CArray的用法,CArray是MFC提供的一个模板类,提供了动态数组功能。CArray是从CObject派生,有两个模板参数,第一个参数就是CArray类数组元素的变量类型,后一个是函数调用时的参数类型。
[/Quote]
为什么你的回复都是拷贝别人的?
尹成 2010-04-27
  • 打赏
  • 举报
回复
CArray的用法,CArray是MFC提供的一个模板类,提供了动态数组功能。CArray是从CObject派生,有两个模板参数,第一个参数就是CArray类数组元素的变量类型,后一个是函数调用时的参数类型。
tanwei1002 2010-04-27
  • 打赏
  • 举报
回复
楼主可以看下MSDN
finder_zhang 2010-04-27
  • 打赏
  • 举报
回复
C++里有很多模板,方便我们用同样的操作来操作不同的数据类型.

C....<类型> 尖括号里填入数据的类型,就成了对应不同类型的模板的一个实例.

真要慢慢去看看模板才行,很有用的.

finder_zhang 2010-04-27
  • 打赏
  • 举报
回复
这个与STL中的 vector 是极类似的东西.

CArray 是一个数组类的模板,他可以是各种类型的数组,到底是什么类型,由我们的代码决定.

CArray<int,int&> a_Int; 这样写,意思是a_Int是一个int的数组,相当于int a_Int[10]
但这个CArray<int,int&> a_Int;比简单的数组用得更灵活,更安全,可以任意变更长度.增减元素.

那么CArray<cityadds,cityadds&> a_ArrVal; 这样,就是定义了一个 cityadds 类型的数组.
由于要经常写 CArray<cityadds,cityadds&> 这么长一串,为了方便书写.
typedef CArray<cityadds,cityadds&> CCityAddsArray;
这样意思就是,下次我们写CCityAddsArray,就相当于写了CArray<cityadds,cityadds&>
那么 CCityAddsArray a_ArrVal 就相当于是 定义了一个 cityadds 类型的数组
快乐鹦鹉 2010-04-27
  • 打赏
  • 举报
回复
你的知识面太狭窄了......
#include <afxtempl.h>就可以解决了。
gamedragon 2010-04-27
  • 打赏
  • 举报
回复
LZ去看看“模板”。
wltg2001 2010-04-27
  • 打赏
  • 举报
回复
typedef CArray<cityadds,cityadds&> CCityAddsArray;
================
这个是CArray的用法,CArray是MFC提供的一个模板类,提供了动态数组功能。CArray是从CObject派生,有两个模板参数,第一个参数就是CArray类数组元素的变量类型,后一个是函数调用时的参数类型。

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧