gpt4 book ai didi

c++ - 如何为包含 std::vector 的类实现operator[]

转载 作者:行者123 更新时间:2023-12-02 22:15:37 25 4
gpt4 key购买 nike

我想重写包含 std::vector 对象的对象的 [] 运算符(也就是说,让下标行为就像它是直接应用于成员 vector )。这是我到目前为止所拥有的

using namespace std;
#include <string>
#include <iostream>
#include <vector>

class VectorWrapper
{
public:
VectorWrapper(int N): _N(N), _vec(N) {}

~VectorWrapper() {delete &_vec;}

string operator[](int index) const
{
return _vec[index];
}

string& operator[](int index)
{
return _vec[index];
}


private:
int _N;
vector<string> _vec;
};

int main()
{
VectorWrapper vo(5);
vo[0] = "str0";
std::cout << vo[0];
}

运行时会产生以下错误

Process finished with exit code 11

我做错了什么?

最佳答案

您正尝试在析构函数中删除您的成员。仅对使用 new 创建的对象使用 delete。完全删除该析构函数,语言将为您处理析构函数。

此外,您的第一个索引运算符应该返回 const 引用

string const& operator[](int index) const

而不是一个值。

此外,_N 是非法名称。不允许您命名以下划线开头并后跟大写字母的事物。

关于c++ - 如何为包含 std::vector 的类实现operator[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60383588/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com