由于自己写代码时有不严谨,这个错误碰到过不少次。
首先,根据百度知道上的解释:
这个问题的原因是有头文件,但是找不到实现。 有两个原因:1.只包含了头文件,只有这个函数的声明,没有包含这个函数的实现(实现一般放在cpp文件中的)。所以只能通过编译,连接不成功。 2.另一个原因是函数的声明和实现都放在头文件中了,一般要把声明放头文件中,实现放在cpp文件中。这样每个#include该头文件的文件都会有一份该函数的实现,连接的时候,连接器不知道连接哪一个实现,于是报错。
反正开始看到这些解释我是一脸懵逼的,但自己找到问题后,发现这个解释还是挺专业的。
接下来是我遇到这个错误的原因
1.
class BinaryTreeNode
{
friend class BinaryTree;
private:
char element;
//节点的数据域
BinaryTreeNode *leftChild;
//结点的左孩子节点
BinaryTreeNode *rightChild;
//结点的右孩子节点
public:
BinaryTreeNode();
//默认构造函数
BinaryTreeNode(const char&ele)//给定数据域的值的构造函数
{
element=ele;
leftChild=NULL;
rightChild=NULL;
}
BinaryTreeNode(const char&ele,BinaryTreeNode*l,BinaryTreeNode*r)//给定数据值和左右孩子结点的构造函数
{
element=ele;
leftChild=l;
rightChild=r;
}
BinaryTreeNode*getLeftChild()const//返回该节点的左孩子节点
{
return leftChild;
}
BinaryTreeNode*getRighttChild()const//返回该节点的右孩子节点
{
return rightChild;
}
}
这是二叉树的结点类的一部分,而声明了却没有定义的默认构造函数正是造成标题错误的其中之一。所以就个人经验而谈,类中声明的函数结构请一定别忘了定义(简单两个大括号也好呀),不然标题这个错误找起来真心痛苦。
2.
void mian()
{
}
细心的人可能发现主函数main()打错了,这也是造成标题错误的一个原因。发现自己干了这档子事情的时候感到非常羞愧,不过看到朋友也干了这档子事儿后,莫名一阵开心 。 【1|error LNK1120: 1 个无法解析的外部命令(详细小问题解释)】
以上便是我到现在为止遇到的,之后遇到新的问题再继续追加。
附:vs2015中,类中声明的函数若未定义将不会报错。
推荐阅读
- 1/70|1/70 我
- 1/28|1/28 自控力,会生长吗()
- Spring Boot 整合shiro模拟前后端分离
- 感赏日记2018|感赏日记2018,1,9(9)
- 1|SPI的应用,借鉴
- 在阿里云开通SSL后,网站PING不通!再说一下 阿里云的服务响应和体验真心的太差!!你们有没有同感()
- 1/70|1/70 让阅读成为习惯
- 1|MHA+keepalive高可用环境搭建