首页 > 解决方案 > 我在构造函数调用期间面临运算符重载问题

问题描述

在这里,我实现了一个名为 Vector 的类,并尝试使用参数 initialized_list 重载 = 运算符。

#include<iostream>
using namespace std;
template<class T>
class Vector
{
private:
    T* arr;
    int  _size;
    int capacity;

public:
    Vector();
    ~Vector();
    Vector<T>& operator = (const initializer_list<T>& l);
    
};
template<class T>
Vector<T>& Vector<T>::operator = (const initializer_list<T>& l)
{
   
    _size=capacity=l.size();
    arr=new T[l.size()];
    return *this;
}
template<class T>
Vector<T>::Vector()
{
    _size=0;
    capacity=0;

}
template<class T>
Vector<T>::~Vector()
{
    delete[] arr;
}

在这个实现中,如果我使用下面的代码运行它可以正常工作。

int main()
{
    Vector<int>v;
    v={1,2,3};
}

但是如果我想使用下面的代码运行它会显示error: could not convert '{1, 2, 3}' from '<brace-enclosed initializer list>' to 'Vector<int>'

int main()
{
    Vector<int>v={1,2,3};
}

如何解决此问题以使其像上面的代码一样工作?

标签: c++constructoroperator-overloading

解决方案


推荐阅读