代码段如下。错误是在cout行的foo函数中:
typedef struct Datatype {
int first;
int second;
} Datatype;
void foo(std::array<Datatype, 100>* integerarray){
cout << *integerarray[0].first << endl; //ERROR: has no member first
}
void main() {
std::array<Datatype, 100> newarray;
for(int i=0; i<100; i++)
newarray[i] = i;
}
foo(&newarray);
}
最佳答案
由于运算符的优先级,*integerarray[0].first
转换为*(integerarray[0].first)
,这不是您想要的。您需要使用(*integerarray)[0].first
。
cout << (*integerarray)[0].first << endl;
通过传递引用可以简化您的生活。
void foo(std::array<Datatype, 100>& integerarray){
cout << integerarray[0].first << endl;
}
另外,您无需在C++中使用
typedef struct DataType { ... } DataType;
。您可以只使用struct DataType { ... };
关于c++ - 通过作为C++函数的指针传递来访问std::array元素的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52286681/