【问题标题】:error expected initializer before < token<令牌之前的错误预期初始化程序
【发布时间】:2012-03-26 01:05:55
【问题描述】:

我正在重载赋值运算符,并收到此错误。解决不了。

这是模板类 binTree 中的原型

binTree <T>& operator = ( const binTree <T>& ); // assignment operator

方法如下

// assignment operator
template <class T>
void binTree <T>::binTree <T>& operator = ( const binTree <T>& p)
{
    if( this != &p ) 
    { 
        clear(root); // clear tree 
        root = copy(p.root); // copy tree
    }      
    return *this;
}

我在这一行得到错误

void binTree <T>::binTree <T>& operator = ( const binTree <T>& p)

【问题讨论】:

    标签: c++ templates overloading operator-keyword


    【解决方案1】:

    来自您的声明

    binTree <T>& operator = ( const binTree <T>& );
    

    你的班级类型是

    binTree<T>::
    

    你的会员是

    operator =(const BinTree<T>& p)  
    

    你的返回类型是

    binTree<T>&
    

    所以你的定义是

    binTree<T>& binTree<T>::operator= (const binTree<T>& p){
         // bug-free code goes here
    }
    

    【讨论】:

    • @user1236803 不客气。您可以通过选中问题旁边的复选标记将问题标记为已解决。
    【解决方案2】:

    您不需要返回类型中的第二个bintree&lt;T&gt;

    binTree <T>& operator = ( const binTree <T>& p)
    

    编辑:从行首删除void(复制粘贴太快的结果)

    【讨论】:

    • 你是对的,你也不需要void -- 匆忙复制粘贴...(更正)
    猜你喜欢
    • 2014-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多