Hi everyone, I'm new to C and have been given a C program to complete but found it includes many versions of the titled error for each class file.

Can anyone please explain why it occurs and how I could get rid of them?

Thanks,
Cleo

q2.c:5: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘spellChecker’

Example of a class:

class spellChecker {
protected:
  struct wordRecord* wordList;

public:
  spellChecker() {
    wordList=NULL;
  }
 
};

its actually not a C program.Your program is in C++.Anyways
Which compiler you are using?
post a stand alone code so that we cant check the error!!

its actually not a C program.Your program is in C++.Anyways
Which compiler you are using?
post a stand alone code so that we cant check the error!!

Okay, thanks for that, that was a stupid mistake, lol, I have not really got any experience with C++. I'm compiling it from the terminal window with g++ instead now.

If you don't mind, I have a new question with a new error.

I have a few of these:

error: ‘wordPointer’ was not declared in this scope
error: ‘malloc’ was not declared in this scope

so I passed wordPointer as a parameter (char* wordPointer)
but then found this brought me further errors for each variable I've defined within a structure or the class.

How do I allow these variables to be used publicly?

bool caseInsensitivelyEqual(char* s1, char* s2) {
    int i=0;
    bool same=true;
    while (s1[i] && s2[i] && same) {
        same=(tolower(s1[i])==tolower(s2[i]));
        i++;
    }
      if (s1[i] || s2[i]) same=false;
      return same;
    }
    //Here are the variables I am using in my print method.
    struct wordRecord {
      char* [U]word[/U];
      struct wordRecord* [U]next[/U];
    };
    class spellChecker {
    protected:
      struct wordRecord* wordList;

    public:
      spellChecker() {
        wordList=NULL;
      } 
};

and the other 2 variables I am using for my print method are within
my case sensitive spellChecker class

struct wordRecord *root;
struct wordRecord *wordPointer; 
root = malloc(sizeof( struct wordRecord)); 
root -> next = 0; 
root -> word = dest; 
wordPointer = root; 

print method: I have passed them as parameters below:

void printDict(char* wordPointer, char* root, char* word, char* next) {
    //Step through dictionary, printing each word
    wordPointer -> root;
    while(wordPointer != NULL) {
        printf("%s\n", wordPointer -> word);
        wordPointer = wordPointer -> next;      
    }
  }

And the further errors I received:

error: request for member ‘root’ in ‘* wordPointer’, which is of non-class type ‘char’
error: request for member ‘word’ in ‘* wordPointer’, which is of non-class type ‘char’
error: request for member ‘next’ in ‘* wordPointer’, which is of non-class type ‘char’

Edited 3 Years Ago by mike_2000_17: Fixed formatting

Hi there,

I think you have mistaked the pointer you should receive a wordRecord* and not a char* in the void printDict(char* wordPointer, char* root, char* word, char* next) in order you can use the word and next members in this way wordPointer -> word.

This question has already been answered. Start a new discussion instead.