LNK2019输出运算符过载时出错
LNK2019 Error on overloaded output operator
我从这段代码中得到以下错误:错误1错误LNK2019:未解析的外部符号"class std::basic_stream>&__cdecl运算符<<(class std::basic_stream>>,class Point const&)"(??6@YAAAV$basic_ostream@DU$char_traits@D@std@@@std@@AAV01@ABV$Point@N@@@Z) 在函数_main G:\C++Part II\ Final Exam\Point\Point\Source.obj Point 中引用
我知道这个错误通常意味着我没有定义函数,但它是定义好的。如果我主要注释掉cout语句,程序就会编译。我猜我的模板名称遗漏了什么?
#include <iostream>
using namespace std;
template <class T>
class Point{
private:
T x, y;
public:
Point(): x(0), y(0) {cout << "Default Constructorn";};
Point(T a, T b): x(a), y(b) {cout << "Parameterized Constructorn";};
Point(const Point &rhs);
~Point() {cout << "Destructorn";};
friend ostream &operator<<(ostream &os, const Point<T> &X);
};
int main(){
Point <double> B;
cout << B << endl;
return 0;
}
template <class T>
Point<T>::Point(const Point &rhs)
{
x = rhs.x;
y = rhs.y;
cout << "Copy Constructorn";
}
template <class T>
ostream &operator<<(ostream &os, const Point<T> &X)
{
os << "(" << X.x << ", " << X.y << ")";
return os;
}
您在类中声明为友元的函数实际上与您实现的函数不同。这是一个模板化的函数,声明需要反映这一点:
template <class T> friend ostream &operator<<(ostream &os, const Point<T> &X);
相关文章:
- 递归函数计算序列中的平方和(并输出过程)
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 请解释"函数1(p1,p2,p3);"的输出
- 在C++目录中搜索文件的函数输出中出错
- 如果我决定输入 (1 2) 而它要求 x,为什么我的输出会出错,但如果我输入 (12) 工作正常
- 程序的 substr() 函数中的输出出错
- C++ 控制台输出到 cmd 在重复十次后出错
- 使用输出在声明容差范围内的EXPECT_NEAR时出错
- 我同时使用了莱布尼茨和瓦利斯公式来估算π但输出数字错误,我不知道我哪里出错了
- 尝试过载输出运算符时出错
- 输出出错
- C++:将自定义哈希键值从 unordered_map 输出到 std::cout 时出错
- 保护输入和输出文件描述符时出错
- 将字符指针(初始化为"\0")发送到标准输出是否出错?(C++)
- matPutVariable:尝试将数据输出到mat文件时出错(matrix::serialize::WrongSize
- 为什么我的输出流seg出错,而我的虚拟析构函数不起作用,但当我杀死虚拟的时候,它起作用了
- LNK2019输出运算符过载时出错
- 安装用C++编写的Python包(leven)时出错:g++无法识别的命令行选项--输出lib
- 创建输出文件 .rdstate() 时出错,返回值 2
- 在c++中编译Lex输出时出错