C++类的超前声明
解决了两个调试问题。
问题一 如何定义使类的成员变量保存的是该类的一个实例?
答: 类自身不能作为其成员变量,其成员变量只能定义为类(实例)的指针或引用。
class CNode
{
private:
CNode m_Node; // 出错
CNode *m_pNode; // 正确
}
问题二 两个类相互引用,如何声明?(超前声明)
答:
class A;
class B
{
private:
A m_a; // 错误
A *m_pa; // 正确
}
class A
{
B m_b;
B *m_pb;
}
其实两个问题都是类聚合时的强依赖问题。
一般此类错误都是由于Makefile文件该行命令语句,没有以Tab开头。
编辑/etc/inputrc
去掉#set bell-style none前的井号,就可以脱离烦恼的滴滴声了。赶快去试试吧。
当使用visual stdio建立工程后,默认的入口时int _tmain(int argc, _TCHAR* argv[]),而不是常见的main()函数。
实际上_tmain是main的别名定义在#include <tchar.h>中的#define _tmain main,必须包含此头文件才能编译通过。编译后认为main。
默认是把#include <tchar.h>放在预编译头文件中stdafx.h中的,大家可以打开看看。
对了,还没说为什么要用_tmain(),是为了保证移植unicode而加入的(一般_t、_T、T()这些东西都和unicode有关系)