c++ - 我在构造函数调用期间面临运算符重载问题
问题描述
在这里,我实现了一个名为 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};
}
如何解决此问题以使其像上面的代码一样工作?
解决方案
推荐阅读
- python - 了解和评估模板匹配方法
- flutter - 在带有颤振的 iOS 模拟器上运行时出错
- python - “零”对象没有属性“罪”
- apache-spark - 在谈论 Hadoop、Spark 和大数据时,人们所说的“中间结果”是什么意思?
- amazon-web-services - 我看到 sls deploy 正在为我的 Lambda 函数自动创建一个 IAM 角色
- java - 添加参数以匹配 'add(int, ? extends Number)
- html - 与弹性框相反的方向垂直对齐文本
- c# - 如何为 Blazor(服务器端)和 MVC Core 使用相同的布局?
- amazon-web-services - 是否可以在 CodeDeploy 的 CLI 中查看部署事件?
- java - Maven 新手,在构建时看到问题 Malformed POM G:\WorkSpace\Test\pom.xml: Unrecognized tag: 'pluginRepositories'