严重性 代码 说明 项目 文件 行 禁止显示状态 错误 LNK2019 无法解析的外部符号 "public: void __thiscall XXX

VS2017

有一段时间没写c++了,这次用vs2017写c++报这个错又有种熟悉的味道。

原因:c++在写模版函数时(template<class T>之类的),头文件不能与cpp文件分离。这就意味者,你头文件定义的含模版的地方必须在头文件中实现,没用模版定义的地方可以放在cpp中实现

比如这样:

class Caculator
{
private:
	int* data = NULL;
	int dataSIze = 0;
	int dataIndex = 0;
	char* operators = NULL;
	int operatorSize = 0;
	int operIndex = 0;
	long t_result = 0;
public:
	Caculator();
	Caculator(const Caculator& caculator);
	~Caculator();
	template<int N, int M>
	void init(int(&datas)[N], char(&_operators)[M]) {
		data = datas;
		dataSIze = N;
		operators = _operators;
		operatorSize = M;
	}
	long result();
	template<int N, int M>
	long result(int(&datas)[N], char(&_operators)[M]) {
		init(datas, _operators);
		return result();
	}
	long caculate(int a, char _operator, int b);
};

#endif

 

VSCode

不过值得一提的是,在VsCode里有模版的地方也可以不分离,即你这么写,并全部在cpp中实现也是没问题的

但相应地(就我个人情况),在main.cpp 中include的时候,就要写成#include"caculator.cpp" 而不是 #include"caculator.h",

我也不知道为什么,可能是因为vscode没有进行相应的配置,你include头文件他似乎找不到对应的cpp文件,从而导致报错

no refererence 空引用错误

 

  • 32
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 14
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值