解决:
- 将实现与声明放在一个文件内,可以这么说:在.h中完成实现
- 多处个地方写出实现函数,比如在main.cpp中加入
inline xxx::xxx(…){…} //构造函数举例
原因:
inline是一种建议修饰,编译器若采纳,之后在相应地方进行内联展开容易出现找不到实现函数。多处定义是为了方便在本文件内使用该函数时候,编译器能够链接到相应的函数。
补充:
内联修饰:
- 类内实现,默认是隐式的内联修饰
- 类内显示声明inline ,类外实现
- 类外显示实现
可以将所有函数写成inline,由编译器决定是否inline。