zoukankan      html  css  js  c++  java
  • [基础] 模板+友元类外定义

    下面这种定义方式会报错: Undefined symbols for architecture x86_64

    template <typename T>
    class longint{
    public:
        T num;
        longint (T a = 0) {
            num = a;
        }
        
        friend ostream& operator<< (ostream& out, const longint<T>& Lint);
        ~longint (){
            ;
        }
    private:
    };
    
    template <typename T>
    ostream& operator<< (ostream &out, const longint<T> & Lint) {
        return out<<Lint.num;
    }

    改法一:将重载运算符的T改成S就行了

    //类内声明时
    template <typename S>
    friend ostream& operator<< (ostream& out, const longint<S>& Lint);
    
    //类外定义时
    template <typename S>
    ostream& operator<< (ostream &out, const longint<S> & Lint) {
        return out<<Lint.num;
    }

    改法二:直接在类内定义

    friend ostream& operator<< (ostream& out, const longint<T>& Lint) {
        return out<<Lint.num;
    }
  • 相关阅读:
    Linux文本处理命令
    管道和重定向
    Linux网络基本配置
    网络基础
    普通权限和特殊权限
    Linux权限
    Linux用户
    Linux帮助文档
    创建新表,自动授权trigger
    禁用约束语法测试
  • 原文地址:https://www.cnblogs.com/littletail/p/5264122.html
Copyright © 2011-2022 走看看