struct box
{
char word[200][200];
char meaning[200][200];
int count;
};
struct root {
box *alphabets[26];
};
struct root *stem;
struct box *access;
void init(){
int sizeofBox = sizeof(struct box);
for(int i = 0 ; i<= 25; i++){
struct box *temp =(struct box*)( malloc(sizeofBox));
temp->count = 0;
root->alphabets[i] = temp; //error line
}
}
错误:' - &gt;'之前的预期非限定ID令牌
如何修复此错误。 谁能解释一下这是什么...... ??
答案 0 :(得分:1)
root
是一种类型。您无法在类型上调用运算符->
。您需要一个指向实例的指针(或一个重载->
的类型的实例)。你不需要在c ++中的所有地方写struct
:
root* smth = ....; // look, no "struct"
smth->alphabets[0] = ....;
请注意,在C ++代码中广泛使用原始指针并不是惯用的。修复此问题后,您将遇到其他问题。
答案 1 :(得分:1)
root->alphabets[i] = temp;
此处root
是一种类型。不允许在类型上调用->
。要使用此运算符,您必须具有指向实例的指针。
我认为这一行应该是:
stem->alphabets[i] = temp;
// ^^^^
但是你会在这里遇到错误,因为没有为它分配内存。
所以这一行:
struct root *stem;
应该成为
root *stem = /* ... */; // keyword "struct" is not need here in c++