Toon posts:

[c++] TOKEN defineren

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo allen...

Ik heb een h-file die ik dien te gebruiken voor een project wat ik doe. Echter de compiler geeft een hele rits errors. Wat ik niet goed begrijp is waarom TOKEN en identifier niet herkend worden. .Die errors heb ik al reeds opgezocht op google.... maar ik kom er nog steeds niet uit. Is er iemand die mij een tip in de goede richting kan geven? Ik denk dat error c4430 de voornaamste oorzaak is van de oerige type errors

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <string>
using namespace std;

class Scanner{ // Scanner.h
private:
    TOKEN currentToken; //ERROR
    char lexeme[256];
    int lineNum;        
    int position;       
    Identifier * ident; // ERROR
public:
    Scanner();
    TOKEN nextToken();              //ERROR
    int getLineNumber()
    int getPosition();  
    Identifier * getIdentifer();    //EROOR
};


Dit zijn de errors die ik krijg
c:\documents and settings\ALF\my documents\visual studio 2005\projects\test2\test2\scanner.h(12) : error C2143: syntax error : missing ';' before '*'
c:\documents and settings\ALF\my documents\visual studio 2005\projects\test2\test2\scanner.h(12) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
c:\documents and settings\ALF\my documents\visual studio 2005\projects\test2\test2\scanner.h(12) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
c:\documents and settings\ALF\my documents\visual studio 2005\projects\test2\test2\scanner.h(18) : error C2143: syntax error : missing ';' before '*'
c:\documents and settings\ALF\my documents\visual studio 2005\projects\test2\test2\scanner.h(18) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
c:\documents and settings\ALF\my documents\visual studio 2005\projects\test2\test2\scanner.h(18) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
c:\documents and settings\ALF\my documents\visual studio 2005\projects\test2\test2\scanner.h(18) : warning C4183: 'getIdentifer': missing return type; assumed to be a member function returning 'int'
c:\documents and settings\ALF\my documents\visual studio 2005\projects\test2\test2\scanner.cpp(10) : error C2143: syntax error : missing ';' before 'Scanner::nextToken'
c:\documents and settings\ALF\my documents\visual studio 2005\projects\test2\test2\scanner.cpp(10) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
c:\documents and settings\ALF\my documents\visual studio 2005\projects\test2\test2\scanner.cpp(10) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
c:\documents and settings\ALF\my documents\visual studio 2005\projects\test2\test2\scanner.cpp(10) : error C2556: 'int Scanner::nextToken(void)' : overloaded function differs only by return type from 'Scanner::TOKEN Scanner::nextToken(void)'
c:\documents and settings\ALF\my documents\visual studio 2005\projects\test2\test2\scanner.h(15) : see declaration of 'Scanner::nextToken'
c:\documents and settings\ALF\my documents\visual studio 2005\projects\test2\test2\scanner.cpp(10) : error C2371: 'Scanner::nextToken' : redefinition; different basic types
c:\documents and settings\ALF\my documents\visual studio 2005\projects\test2\test2\scanner.h(15) : see declaration of 'Scanner::nextToken'
Build log was saved at "file://c:\Documents and Settings\ALF\My Documents\Visual Studio 2005\Projects\test2\test2\Debug\BuildLog.htm"
test2 - 11 error(s), 1 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

Verwijderd

Vanuit je header bestand include je geen andere dan iostream en string; TOKEN en Identifier worden in beide headers niet gedefiniëerd. Dus definiëer ze in deze header of include hier de header waar je het wel gedefinëerd hebt.

[ Voor 5% gewijzigd door Verwijderd op 07-03-2006 13:57 ]


  • Cramthabam
  • Registratie: September 2004
  • Laatst online: 08-02 16:15

Cramthabam

Leef en laat leven

Je mist ook nog een ';'. Plaats deze en je hebt al minder fouten.

Verwijderd

Topicstarter
Cramthabam schreef op dinsdag 07 maart 2006 @ 14:00:
Je mist ook nog een ';'. Plaats deze en je hebt al minder fouten.
Ik zou niet weten waar ik die zou missen.... en dat hij die error geeft is direct gevolg van het feit dat TOKEN herkend wordt

  • Isengrim
  • Registratie: Februari 2004
  • Laatst online: 08:15
Verwijderd schreef op dinsdag 07 maart 2006 @ 14:03:
[...]


Ik zou niet weten waar ik die zou missen.... en dat hij die error geeft is direct gevolg van het feit dat TOKEN herkend wordt
Kijk een op regel 15 ;)

Verwijderd

Topicstarter
Oops lol :) Maar die error had ik er net uitgehaald voordat ik het postte :P

Verwijderd

Topicstarter
Maar goed... nu zit ik nog met het probleem van het defineren van TOKEN. Dit moet een enumtype zijn... en aangezien TOKEN een identifier is dacht ik iets dergelijks las

code:
1
typedef enum TOKEN{};


Maar blijkbaar werkt het niet zo heel simpel XD

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 10:17

.oisyn

Moderator Devschuur®

Demotivational Speaker

Het is C++, die typedefs zijn niet nodig (en als je het toch met een typedef wilt doen dan hoort de naam achter de accolades ;))

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 27-03 16:52
Wel een mooie quizvraag, overigens: is de volgende code legaal, en zo ja, welke integer waardes kunnen dan naar TOKEN worden gecast?
C++:
1
enum TOKEN { };


M.a.w. ik denk dat het geen oplossing is voor de TS, die zal toch echt moeten begrijpen wat TOKEN is.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein

Pagina: 1