社区
工具平台和程序库
帖子详情
技术讨论:C++中使用范型技术的测试和调试问题
scalene
2002-10-23 09:47:50
我感觉C++中用模板经常会导致头文件很复杂;另外,模板中一旦有了错误,好象比较难于调试。大家讨论一下。分可以再加。
...全文
51
25
打赏
收藏
技术讨论:C++中使用范型技术的测试和调试问题
我感觉C++中用模板经常会导致头文件很复杂;另外,模板中一旦有了错误,好象比较难于调试。大家讨论一下。分可以再加。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
25 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
scalene
2002-10-25
打赏
举报
回复
up
scalene
2002-10-24
打赏
举报
回复
形,而上。
scalene
2002-10-24
打赏
举报
回复
偶,模板还是要派生的,有一些其他功能要加(生成Container的具体实现类),因为Container只是一个通用的接口,并不是最后要用的实际类。
cber
2002-10-24
打赏
举报
回复
to scalene(南瓜汤):
我觉得再说下去就要设计具体细节了,而我最近正好对具体的细节不感兴趣,所以,sorry,我决定不再回复了……
scalene
2002-10-24
打赏
举报
回复
up.
scalene
2002-10-24
打赏
举报
回复
热中GP的人那么多,难道没有人真正愿意讨论点问题的吗?
cber
2002-10-23
打赏
举报
回复
看了半天,感觉你的模板应该不再是基类了。不知道我有没有理解错误
scalene
2002-10-23
打赏
举报
回复
“太依赖工具,比如在linux下怎么办”是啊是啊。感觉自己已经被VC惯出不少毛病来了。对于模板这样的技术,我们应该怎样写才是易于测试和调试的呢?大家都用的是什么样的调试方法呢?
scalene
2002-10-23
打赏
举报
回复
我遇到的问题大概是这样的:该基类中间有一个对象链表,类型可能会不一样偶!继承关系我是这样实现的:Container虚基类(类似接口)-》派生-》模板基类(对应具体对象类型,实现虚基类接口时使用的操作在对象基类中定义);对象基类-》派生-》具体对象类。
cber
2002-10-23
打赏
举报
回复
BTW:你的问题是不是真的一定要用GP实现呢???
cber
2002-10-23
打赏
举报
回复
“做基类”?什么形式的基类,如果是public base就代表是OO的设计了,不是GP;如果是protected base或private base,则可以参考正交分解的思路,用正交分解将复杂程度降低,实现自己的Generic Component
你感兴趣的估计是Multi-paradigms吧^_^
yayv
2002-10-23
打赏
举报
回复
我同意使用文件输出方式进行调试。程序运行结束后,可以慢慢分析嘛~~。
跟踪是要消耗很大力气的,而且太依赖工具,比如在linux下怎么办?要是到了HP-UX这类专用系统上又怎么办呢?
scalene
2002-10-23
打赏
举报
回复
比如说,我有一个用得比较多的模板,现在我知道某一时刻它出错了,加点调试信息在程序里,结果打印了非常多的信息。等等。
讨论一下嘛。
scalene
2002-10-23
打赏
举报
回复
俺只用过VC6.
middle
2002-10-23
打赏
举报
回复
用VC7单步跟踪模版,和普通的class没有区别。对于参数化的类型,VC7 Debugger也会给出运行时实例化的类型。
没有什么难于调试的地方。
scalene
2002-10-23
打赏
举报
回复
我并没有什么很特别的问题,主要是想和大家讨论一下怎样把GP写得更好。我主要想弄清楚的问题是:对于比较复杂的问题,GP应该注意的有哪些(比如说用做基类,或者实现和系统结构有关的功能)?大家在这方面有什么好的经验和建议,多多交流,我会给分的。:)
cber
2002-10-23
打赏
举报
回复
依然不懂你的问题所在:(
GP不是万能的,我现在甚至怀疑是不是你的程序设计有问题了
scalene
2002-10-23
打赏
举报
回复
“单元测试程序和模板好像很难联系到一起吧(不过和模板实例化后的东东应该是可以联系起来的)。”是啊,如果这个基类很抽象,就不太容易把它实例化写出单元测试程序。因为实例化以后的可能性比较多。
大家既然那么热中于GP,不会思路只局限在STL上,告诉我GP只能实现一些通用算法吧。
scalene
2002-10-23
打赏
举报
回复
比方说,该基类里有一些虚方法,我只知道对于派生类来说他们是数据操作方法,可是我并不知道派生类的具体数据结构,更不知道这些方法里具体会干什么。而我这个基类,主要是提供一些和内存管理有关的方法——很多问题确实就是这么复杂,就是这么抽象。一定简化的了吗?未必。
cber
2002-10-23
打赏
举报
回复
“需要把基类定义成一个模板,它的定义可能比较抽象,可能它的方法定义的并不全,而且有可能实现比较复杂,所以写单元测试程序不是太容易”
如何的抽象?为什么定义不全?能不能采取一些方法减低复杂程度?单元测试程序和模板好像很难联系到一起吧(不过和模板实例化后的东东应该是可以联系起来的)。
很多的问题看起来很复杂,其实是因为设计者没有仔细思考的原因。我觉得,在写程序时,思考占很大一部分时间,实际上代码的编写只是“打字+部分的调试”而已
加载更多回复(5)
STL标准模板库--编程初步视频精讲
STL(Standard Template Library),即标准模板库,是一个具有工业强度的,高效的
C++
程序库。它被容纳于
C++
标准程序库
中
,是ANSI/ISO
C++
标准
中
新的也是极具革命性的一部分。 STL将数据结构和算法的分离,使得STL变得非常通用,体现出了
范型
编程的特点。本课提供对STL各部分内容的入门介绍,使学习者能够了解STL的概貌,为继续深入学习STL提供支持。
Effective
C++
条款1:视
C++
为一个语言联邦 刚开始的时候,
C++
只是C加上一些面向对象特性,
C++
最初的名字叫做C with class也反映了这一点。 现在的
C++
应是一个多重
范型
编程语言,一个同时支持过程形式、面向对象形式、函数形式、泛型形式、元编程形式的语言。 我们应该将
C++
看做是一个由相关语言组成的联邦而非单一的语言,其
中
包括C、Object-Orientd
C++
、Template
C++
以及ST...
CLR的
范型
解秘(来自MSDN
中
的
技术
文章)
CLR
中
的泛型简介 发布日期 : 1/11/2005 | 更新日期 : 1/11/2005
C++
模板元编程
所谓的元编程就是编写直接生成或操纵程序的程序,
C++
模板为
C++
语言提供了元编程的能力。模板使
C++
编程变得异常灵活,能实现很多高级动态语言才有的特性(语法上可能比较丑陋,一些历史原因见下文)。普通用户对
C++
模板的
使用
可能不是很频繁,大致限于泛型编程,但一些系统级的代码,尤其是对通用性、性能要求极高的基础库(如 STL、Boost)几乎不可避免的都大量地
使用
C++
模板,一个稍有规模的大量
使用
模板的程序,不可避免的要涉及元编程(如类型计算)。本文就是要剖析
C++
模板元编程的机制。
Effective
C++
读书笔记
Effective
C++
读书笔记 条款1:尽量用const和inline而不用#define 1.为方便
调试
,最好
使用
常量 注意:常量定义一般放在头文件
中
,可将指针和指针所指的类型都定义成const,如const char * const authorName = Scott Meyers; 类
中
常量通常定义为静态成员, 而且需要先声明后定义可以在声明时或定义时赋值,也可
使用
借用enum的方法如enum{Num = 5}; 2.#define语句造成的
问题
如#define max(a, b...
工具平台和程序库
24,854
社区成员
27,343
社区内容
发帖
与我相关
我的任务
工具平台和程序库
C/C++ 工具平台和程序库
复制链接
扫一扫
分享
社区描述
C/C++ 工具平台和程序库
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章