gpt4 book ai didi

c++ - 访问 unordered_maps 作为指针

转载 作者:行者123 更新时间:2023-11-27 22:51:57 24 4
gpt4 key购买 nike

出于某种原因,我在编辑我的 unordered_map 中的值时遇到了问题,并且想知道我做错了什么。

在下面的代码中,参数是一个结构体。出于某种原因,以下代码抛出语法错误,不喜欢 [.

void MyClass::setParameter(string name, parameter param) {
if (this->param_name_to_data == nullptr) {
//create it lazily
this->param_name_to_data = new unordered_map<string, parameter>();
}
this->param_name_to_data->[name] = param;
}

对应.h文件中声明的字典id为:

private:
std::unordered_map<std::string, parameter> * param_name_to_data = nullptr;

我做错了什么?

最佳答案

param_name_to_data->[name] = param; 不是有效语法

当编译器看到 -> 时,它会查找成员变量或成员函数。语句 ->[...] 没有意义,因为单独的 [] 既不是成员变量也不是函数。

你可以改写

(*param_name_to_data)[name] = param;

或者先将指针指向引用

auto& map = *param_name_to_data;
map[name] = param;

你也可以使用丑陋的文字形式

param_name_to_data->operator[] (name) = param

但是最后一个不鼓励。

关于c++ - 访问 unordered_maps 作为指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36391762/

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