1.typedef 最近写(抄袭)数据结构的项目,最常用的就这个关键字了,然而对他的用法一直不太清楚,这里有篇博文说的还比较清楚,引荐一下
http://www.cnblogs.com/csyisong/archive/2009/01/09/1372363.html
2.遇到了一个比较有趣的小错误,错误 4error C2228: “.code”的左边必须有类/结构/联合 d:\本科\第四学年\15-16-2\数据结构\hfm\hfm\decoding.cpp29 1 hfm
void Codeing(HFMC T)//首先是声明了一个T变量,这个HFMC是我自己定义的数据类型
if(T.lchild==-1)//然后这句报了如上的错误
为什么呢?因为一个简单的“->”和“.” 这两个符号的错误,众所周知,“->”是用于指针指向结构体成员的,对于类/结构/联合操作数据成员用“.”操作符,但是定义的时候好像不是指针呀,因为指针藏在头文件里的这句话里,
typedef HFMCnode HFMC[MAXLEN];//这里的T其实是数组呢,如果想用“.",得用T[10].lchild。
3.嗯两个项目都遇到同样一个坑爹的错误,我来粘图了,
VC++常见错误原因解析--error LNK2019: 无法解析的外部符号 "public: void __thiscall
原因一:
只是在.h里面声明了某个方法,
没有在cpp里面实现
。
具体讲,有时候在头文件中声明了需要的方法,确实忘记了在源文件中实现;
有时候在头文件中声明了需要的方法,在源文件中实现了该方法,但是却遗留了方法名前的“classname::”;
有时候在头文件中声明并实现了需要的方法,但是在代码调整时直接把方法copy到源文件时,并没有在函数前加“classname::”;
原因二: 声明和实现都有了,但是 没有添加到vs的project 目录下面,这时候如果在其他.cpp中引用的,就会出现这个错误。
具体讲,导入自己以前的代码或其他现有代码时,复制到工程下目标文件夹后,有时候会在vs的project目录下忘记或遗漏添加这些文件,就可能引起这个错误。
原因三: 有时候工程比较大时,会直接加入一些原有的基础工程来提交效率,如果对原有工程不太熟悉,在工程中加入了有 相同名字的文件或者类 时,同样会引起这个问题。
这种情况下的具体原因是编译时会出现相同名字的中间文件,因为编译有先后顺序,出现了文件替换,在其他文件引用被替换掉的文件时,导致最后会出现了个连接问题。
原因四: 内联函数 相关,如果内联函数的声明在头文件中,实现在源文件中,这时候如果其他类中只是包含了头文件,在调用这个内联函数时也会出现这个问题。
具体讲,有时候在头文件中声明了需要的方法,确实忘记了在源文件中实现;
有时候在头文件中声明了需要的方法,在源文件中实现了该方法,但是却遗留了方法名前的“classname::”;
有时候在头文件中声明并实现了需要的方法,但是在代码调整时直接把方法copy到源文件时,并没有在函数前加“classname::”;
原因二: 声明和实现都有了,但是 没有添加到vs的project 目录下面,这时候如果在其他.cpp中引用的,就会出现这个错误。
具体讲,导入自己以前的代码或其他现有代码时,复制到工程下目标文件夹后,有时候会在vs的project目录下忘记或遗漏添加这些文件,就可能引起这个错误。
原因三: 有时候工程比较大时,会直接加入一些原有的基础工程来提交效率,如果对原有工程不太熟悉,在工程中加入了有 相同名字的文件或者类 时,同样会引起这个问题。
这种情况下的具体原因是编译时会出现相同名字的中间文件,因为编译有先后顺序,出现了文件替换,在其他文件引用被替换掉的文件时,导致最后会出现了个连接问题。
原因四: 内联函数 相关,如果内联函数的声明在头文件中,实现在源文件中,这时候如果其他类中只是包含了头文件,在调用这个内联函数时也会出现这个问题。
http://www.tuicool.com/articles/Ff6RVr(原文地址)