如何解决C ++朋友模板函数:找不到函数定义
在尝试围绕C ++模板时,我遇到了一个编译器警告,我不明白。在vec.h
的下面,Visual Studio 2019将在operator<<<T>
的{{1}}下的绿色花体中显示警告“找不到class vec
的函数定义。
否则,代码将编译并正常运行。特别是,我不了解这种情况与不会产生警告的operator<<<T>
有何不同。
operator+
在#pragma once
#include <iostream>
template<typename T>
class vec;
template<typename T>
vec<T> operator+(const vec<T>& a,const vec<T>& b);
template<typename T>
std::ostream& operator<<(std::ostream& os,const vec<T>& v);
template<typename T>
class vec {
public:
vec(T xx = 0,T yy = 0) : x(xx),y(yy) {}
friend vec<T> operator+<T>(const vec<T>& a,const vec<T>& b);
friend std::ostream& operator<<<T>(std::ostream& os,const vec<T>& v);
private:
T x,y;
};
中,我为朋友函数和一些显式实例化放置了函数模板。
vec.cpp
解决方法
这只是Visual Studio IntelliSense的不正确警告。该代码格式正确并已成功编译。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。