0

在我的头文件中,我有

template <typename T>
class Vector {
    public:
         // constructor and other things

         const Vector& operator=(const Vector &rhs);   
};

这是我迄今为止尝试过的一个声明

template <typename T> Vector& Vector< T >::operator=( const Vector &rhs )
{
    if( this != &rhs )
    {
        delete [ ] array;
        theSize = rhs.size();
        theCapacity = rhs.capacity();

        array = new T[ capacity() ];
        for( int i = 0; i < size(); i++ ){
            array[ i ] = rhs.array[ i ];
        }
    }
    return *this;
}

这就是编译器告诉我的

In file included from Vector.h:96,
                 from main.cpp:2:
Vector.cpp:18: error: expected constructor, destructor, or type conversion before ‘&amp;’ token
make: *** [project1] Error 1

如何正确声明复制构造函数?

注意:这是一个项目,我不能更改标题声明,所以像这样的建议虽然有用,但在这个特定情况下没有帮助。

谢谢你的帮助!

4

1 回答 1

2

注意:您声明一个赋值运算符,而不是复制构造函数

  1. const您在返回类型之前错过了限定符
  2. 你错过了<T>返回类型和函数参数的模板参数()

用这个:

template <typename T>
const Vector<T>& Vector<T>::operator=(const Vector<T>& rhs)
于 2013-02-12T01:41:59.390 回答