相关疑难解决方法(0)

模板类朋友操作员成员函数

我正在尝试在模板化的类中获取一个朋友函数来编译,但错误消息和警告我不明白.我已经证明了这个问题.我得到的错误是:

prog.cpp:8:57:错误:非类,非可变部分特化C运算符+(const B&lhs,const C&rhs);

prog.cpp:15:59:警告:朋友声明'C运算符+(const B&,const C&)'声明一个非模板函数[-Wnon-template-friend]朋友C运算符+(const B&lhs,const C&rhs);

prog.cpp:15:59:注意:(如果这不是你想要的,请确保已经声明了函数模板,并在函数名后添加<>)

#include <iostream>
using namespace std;

template<typename A, typename B>
class C;

template<typename A, typename B>
C<A, B> operator+<A, B>(const B& lhs, const C<A, B>& rhs);

template<typename A, typename B>
struct C
{
    A val_;
    C operator+(const C& other) const;
    friend C<A, B> operator+(const B& lhs, const C<A, B>& rhs);
};

template<typename A, typename B>
C<A, B> C<A, B>::operator+(const C<A, B>& other) const
{
    C<A, B> c;
    c.val_ = this->val_ + …
Run Code Online (Sandbox Code Playgroud)

c++ templates friend c++11

8
推荐指数
2
解决办法
1601
查看次数

标签 统计

c++ ×1

c++11 ×1

friend ×1

templates ×1