Tag Archives: c++

c++ compile error: discards qualifier

在调试matrix类的时候,遇到了这个错误。 参考这儿知道这个错误的原因了: discards qualifier 1. Example myfile.cpp: In function `int main()’: myfile.cpp:20: passing `const DayOfYear’ as `this’ argument of `void DayOfYear::Set(int, int)’ discards qualifiers 2. Meaning You have an inconsistency with the use of “const” 3. Usual Causes 1. A … Continue reading

Posted in Program | Tagged , , , , | Leave a comment

C++的++重载

++重载主要要考虑到前增量和后增量的区别。 class A { int t; public: A& operator++(); //前缀 A operator ++(int); //后缀 } A& A::operator++() { ++t; return *this; } A A::operator++(int) { A a=*this; ++t; return a; }

Posted in Program | Tagged | Leave a comment

(转)C++中二维数组new小结

二维数组new小结 转至水木清华 1. A (*ga)[n] = new A[m][n]; … delete []ga; 缺点:n必须是已知 优点:调用直观,连续储存,程序简洁(经过测试,析构函数能正确调用) 2. A** ga = new A*[m]; for(int i = 0; i < m; i++) ga[i] = new A[n]; ... for(int i = 0; i < m; i++) … Continue reading

Posted in Program | Tagged , | 3 Comments

编写多平台编译的C++代码

好东西,学习一下。 存一个到自己的BLOG。 使用C++编写软件的时候,经常需要同时在多个OS/Compiler平台上编译。在进行设计决策的时候,事先考虑到跨平台的需求,能够有效的减少后期的工作量。 在代码编写时,尽量避免使用OS/Compiler相关API或者语言扩展。这里有一些建议,比如,在做GUI时,不要使用MFC,否则在类 UNIX平台就要完全重写了。可以使用一个可移植的GUI工具,比如使用TCL/TK来编写界面或者使用一个可以在多个平台上使用的GUI库,著名的有 wxWindows。在需要使用线程或者同步原语的地方,可以使用一些多平台的库,比如使用boost中的线程,或者专用的多平台线程库,比如 ZThread。实在无法避免的,就使用编译开关#ifdef、#endif。另外,如果要支持的UNIX平台种类很多,还要注意,有些OS上的编译器对模版的支持不太好。 除了代码,还有一个很重要的是Makefile。在Windows上,如果使用VC,可以用工程文件,也可以使用VC的nmake编译 Makefile。在Unix上,编写大工程的支持工具有autoconf和automake。autoconf可以自动的生成configure脚本, configure脚本能够全面检测不同的OS和Compiler的特征,为编译C++代码提供了很大的方便。 生成configure,最重要的是configure.in和一组m4文件构成。不同的m4文件分别检测系统的不同特征,然后再 configure.in中指定使用那些m4;automake负责从用户编写的Makefile.am中生成Makefile.in文件。最后在编译时,使用经典的三个步骤; ./configure make make install 就可以编译所有的代码了。 一个要注意的问题,不同平台的make的语法可能不同,在solaris上臭名卓著的“Unexpect end of line seen”错误很难解决,推荐使用GNU make。 将autoconf、automake和daily build技术结合,能很好的发挥他们的作用。 如果对autoconf和automake工具没有信息,可以考虑一个新的Makefile生成工具。推荐CMake,它可以生成几乎所有平台的Makefile,甚至包括VC和Borland公司的make。 不论使用什么工具,编译多平台编译代码都是一个tedious、error prone的过程。 原文: http://www.blogbus.com/blogbus/blog/diary.php?diaryid=428246

Posted in Program | Tagged , | Leave a comment