1.整个项目文件确保只有一个main()函数;
2.点击cpp文件, 右键, 单独重新编译该cpp文件:
检查编译器输出, 可检查出哪里重定义了文件, 下述就是发现两次重定义class OneDimArrayClass, 分别如下
In file includen from表示文件包含路径, 即该类如何被依次定义的:(A< B表示A包含于B)
第一个路径:
class OneDimArrayClass < CsrCmatrixClass.h < IncompleteCholesky.h < AmgClass.h < SoverClass.h < SoverClass.cpp
另一个路径是:
class OneDimArrayClass < CsrCmatrixClass.h < AmgClass.h < SoverClass.h < SoverClass.cpp
检查AmgClass.h文件发现包含#include "../matrices/CsrCmatrixClass.h"和#include "../preconditioners/IncompleteCholesky.h", 则两次定义class OneDimArrayClass
由于有关系CsrCmatrixClass.h < IncompleteCholesky.h,
则注释#include "../matrices/CsrCmatrixClass.h"就不会报错了!!!
经验总结: 以后检查就单独编译一个cpp就好了!