技术讨论:C++中使用范型技术的测试和调试问题

scalene 2002-10-23 09:47:50
我感觉C++中用模板经常会导致头文件很复杂;另外,模板中一旦有了错误,好象比较难于调试。大家讨论一下。分可以再加。
...全文
51 25 打赏 收藏 转发到动态 举报
写回复
用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)

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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