-1
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
    }
}

错误:'->' 标记之前的预期不合格 ID

如何修复此错误。谁能解释一下这是什么...??

4

2 回答 2

1

root是一种类型。您不能->在类型上调用操作员。您需要一个指向实例(或重载类型的实例->)的指针。你也不需要struct在 C++ 中到处写:

root* smth = ....; // look, no "struct"
smth->alphabets[0] = ....;

请注意,在 C++ 代码中大量使用原始指针并不是惯用的。解决此问题后,您将遇到其他问题。

于 2013-09-14T08:08:02.677 回答
1
root->alphabets[i] = temp;

root是一种类型。不允许调用->类型。要使用此运算符,您必须有一个指向实例的指针。

我认为这条线应该是:

   stem->alphabets[i] = temp;
// ^^^^

但是你会在这里遇到一个错误,因为没有为它分配内存。

所以这一行:

struct root *stem;

应该成为

root *stem = /* ... */; // keyword "struct" is not need here in c++
于 2013-09-14T08:09:02.880 回答