this -> gamesMap.insert(pair<int, int (*)[2]>(const ¤tPos/3,const &dataArray));
我不认为,需要更多代码,但我无法看到我在这里做错了什么。
答案 0 :(得分:2)
简答:
变化:
this->gamesMap.insert(pair<int, int (*)[2]>(const ¤tPos/3,const &dataArray));
为:
this->gamesMap.insert(std::pair<int, int (*)[2]>(currentPos/3, &dataArray));
这可能不太正确(正确答案取决于dataArray的类型),并且可能会导致其他问题(例如,如果gamesMap中对的生命周期超过dataArray的生命周期,那么您将结束使用无效指针。)
长答案
在这一行中,您试图调用std::pair<int, int (*)[2]>
的构造函数:
this->gamesMap.insert(pair<int, int (*)[2]>(const ¤tPos/3,const &dataArray));
您试图将const ¤tPos/3
作为第一个参数传递,将const &dataArray
作为第二个参数传递。我不确定你在这里尝试做什么,但这些都不是语法正确的。 const
只能用于对象的声明,例如:
//Declare `a` to be a const int
int const a(10);
//Declare `b` to be a reference to a const int
//(in this case, a reference to `a`)
int const& b(a);
//Declare `c` to be a pointer to a const int
//(in this case, the the address of `a` is used)
int const* c(&a);
const
是声明中的注释,它向正在声明的对象的描述中添加更多信息。传递参数时,参数采用表达式的形式。表达式的类型可以由编译器推导出来,因此不需要额外的注释。此外,C ++中没有语法来提供这样的注释。
您要传递的内容是currentPos
除以3,以及dataArray
的地址。
评估为“currentPos
除以3”的表达式为“currentPos/3
”。
评估为“dataArray
的地址”的表达式为“&dataArray
”。
这意味着(如简答),你应该写:
this->gamesMap.insert(std::pair<int, int (*)[2]>(currentPos/3, &dataArray));