关闭

error LNK2001: 无法解析的外部符号 "class std::basic_ostream<char,struct std::char_traits<char> > 的解决办法

标签: 基础知识标准
4854人阅读 评论(0) 收藏 举报
分类:
#include <iostream>
#include <math.h>
using namespace std;
template<typename T>
class P
{
public:
	P(int n=0){num=n;}
	P(const P<T>& copy){num=copy.num;}
	friend ostream&operator<<(ostream& out,P<T> & obj);
	
private:
	int num;
};
template<typename T>
 ostream&operator<< (ostream& out,P<T> & obj)
{
	out<<obj.num;
	return out;

}
int main(void)
{
	P<int> t(2);
	cout<<t;

	return 0;
}

上述程序中定义了一个模板类,但出现了错误,如下:

1>------ 已启动生成: 项目: class, 配置: Debug Win32 ------
1>正在链接...
1>main6.obj : error LNK2019: 无法解析的外部符号 "class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl operator<<(class std::basic_ostream<char,struct std::char_traits<char> > &,class P<int> &)" (??6@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@AAV01@AAV?$P@H@@@Z),该符号在函数 _main 中被引用
1>F:\c++\c++ problem collections\class\class\Debug\class.exe : fatal error LNK1120: 1 个无法解析的外部命令
1>生成日志保存在“file://f:\c++\c++ problem collections\class\class\class\Debug\BuildLog.htm”
1>class - 2 个错误,0 个警告
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========

我觉得这个错误主要是重载std的<<运算符造成。解决办法有两个:

一个是直接在类模版中定义这个友元函数。如下:

#include <iostream>
#include <math.h>
using namespace std;
template<typename T>
class P
{
public:
	P(int n=0){num=n;}
	P(const P<T>& copy){num=copy.num;}
	friend ostream&operator<<(ostream& out,P<T> & obj)
	{
		out<<obj.num;
		return out;

	}
private:
	int num;
};

int main(void)
{
	P<int> t(2);
	cout<<t;

	return 0;
}
另一个是:

<pre name="code" class="cpp">#include <iostream>
#include <math.h>
using namespace std;
template<typename T>
class P
{
public:
	P(int n=0){num=n;}
	P(const P<T>& copy){num=copy.num;}
	friend ostream&operator<< <>(ostream& out,P<T> & obj);//friend ostream&operator<< <T>(ostream& out,P<T> & obj);
private:
	int num;
};
template<typename T>
 ostream&operator<< (ostream& out,P<T> & obj)
{
	out<<obj.num;
	return out;

}
int main(void)
{
	P<int> t(2);
	cout<<t;

	return 0;
}



在声明中要多加一个<T>或者<>,在类外定义时不用加,加上就错了。

以上就提供了两种标准的解决办法。


3
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

Caffe: gflag编译出现问题汇总

1. 使用Unicode字符集: 出现问题 E:\CodeBase\ML\Caffe\ThirdPartySrc\gflags-master\src\gflags.cc(1340): error C2...
  • wishchin
  • wishchin
  • 2016-07-12 14:36
  • 2829

Caffe学习笔记(四)——Windows 下caffe配置相关问题说明

本文主要介绍:Win10 64位系统下,再次配置caffe,遇到了一些新的问题,现对这些问题及其解决方法进行总结。 详细的安装配置过程见以前博客:Caffe学习笔记(一)——Windows ...
  • hong__fang
  • hong__fang
  • 2016-09-01 15:49
  • 9123

pcl 无法解析的外部符号

pcl 无法解析的外部符号
  • Gloriamin
  • Gloriamin
  • 2015-08-04 15:12
  • 3523

error LNK2001 无法解析的外部符号 "public: virtual bool __thiscall 问题解决办法

错误 18 error LNK1120: 17 个无法解析的外部命令 C:\Users\Administrator\Desktop\OPENCV\重新生成traincascade\Debug\test...
  • qq_33262266
  • qq_33262266
  • 2017-03-09 14:54
  • 529

VC++ Error LNK2001无法解析的外部符号 的几种情况及解决办法

今天写了一个堆栈小程序,然后碰到了“Error LNK2001 无法解析的外部符号”这个问题,一直解决不了,后来上网搜了下,发现这里面的关于这类错误的内容归纳比较齐全,就摘下来作为参考了。 ...
  • Yang_Jesus
  • Yang_Jesus
  • 2016-10-23 10:40
  • 293

Error LNK2001 无法解析的外部符号 的几种情况及解决办法

今天写了一个小程序,然后碰到了“Error LNK2001 无法解析的外部符号”这个问题,一直解决不了,后来上网搜了下,发现这里面的关于这类错误的内容归纳比较齐全,就摘下来作为参考了。      原...
  • shenyulv
  • shenyulv
  • 2011-08-18 22:48
  • 234437

lnk2001 无法解析的外部符号 的几种情况及解决办法

Error LNK2001 无法解析的外部符号 的几种情况及解决办法 .  今天写了一个小程序,然后碰到了“Error LNK2001 无法解析的外部符号”这个问题,一直解决不了,后来上网搜了下,发...
  • bendangth
  • bendangth
  • 2015-08-14 22:14
  • 5257

error LNK2001: 无法解析的外部符号 "public: static struct QMetaObject const

>Link: 1>  libMFCpt.lib(crypto_mfkj.obj) : 找到 MSIL .netmodule 或使用 /GL 编译的模块;正在使用 /LTCG 重新启动链接;将 /LT...
  • chenyijun
  • chenyijun
  • 2015-11-07 09:23
  • 5486

error LNK2001: 无法解析的外部符号 "public: virtual struct QMetaObject const * __thiscall Widget::metaObject

编写一个简单的给予QT的DEMO程序步骤大致如下: 下面开始编程: A 编写 main.cpp B 编写 hello.h C 编写 hello.cpp D 制作.ui文件,并...
  • bzhxuexi
  • bzhxuexi
  • 2015-05-04 16:00
  • 2927

error LNK2001: 无法解析的外部符号 "public: virtual struct QMetaObject const * __cdecl MainWindow::metaObject(

error LNK2001: 无法解析的外部符号 “public: virtual struct QMetaObject const * __cdecl MainWindow::metaObject(...
  • chan20
  • chan20
  • 2017-07-28 12:11
  • 634
    个人资料
    • 访问:284573次
    • 积分:4122
    • 等级:
    • 排名:第8671名
    • 原创:117篇
    • 转载:82篇
    • 译文:8篇
    • 评论:106条
    个人网站
    最新评论