Compiler-Fehler (wahrscheinlich)



  • Also ich habe folgendes Problem mit Dev-Cpp Version 4.9.9.0:

    Ich habe folgenden Code:

    #include <iostream>
    using namespace std;
    
    class CPoint
    {
        private:
            int x,y;
        public:
            int& operator [] (int ind)
            {
                if(ind < 0)
                {
                    ind = 0;
                }    
                if(ind >= 1)
                {
                    return (y);
                }
                else
                {
                    return (x);
                }    
            }
            CPoint (int xp, int yp)
            {
                x = xp;
                y = yp;
            }
            ~CPoint () {}        
    };    
    
    class CRechteck
    {
        private:
            CPoint ol, or, ul, ur;
        public:
            CPoint& operator [] (int ind)
            {
                if(ind < 0)
                {
                    ind = 0;
                }    
                if(ind >= 3)
                {
                    return (ur);
                }
                if(ind == 2)
                {
                    return (ul);
                }
                if(ind == 1)
                {
                    return (or);
                }
                if(ind == 0)
                {
                    return (ol);
                }          
            }
            CRechteck (CPoint olp, CPoint orp, CPoint ulp, CPoint urp) : ol(olp), or(orp), ul(ulp), ur(urp)
            {
            }              
    };
    
    int main(void)
    {
        return (0);
    }
    

    Das Problem ist, dass ich, wenn ich diesen (meiner Meinung nach richtigen) Code compiliere, folgenden Fehler erhalte (noch ein paar mehr, die aber erst nach diesem Fehler auftreten und aus ihm resultieren):
    36 C:\Rechtecke.cpp syntax error before `||' token

    (ich habe den Pfad nich gepastet)
    Wenn ich das ganze aber mit Microschrott Visual c++ 6 kompiliere, funktionier es. Woran kann das liegen?

    Schonmal Danke,

    Felix



  • Du hast in dem Programm einen Bezeichner 'or' verwendet. Dieser ist aber reserviert und entspricht in der Bedeutung dem || Operator (Logisches Oder). Aus dem Standard:

    +----------------------+-----------------------+-----------------------+
      |alternative   primary | alternative   primary | alternative   primary |
      +----------------------+-----------------------+-----------------------+
      |    <%           {    |     and         &&    |   and_eq        &=    |
      +----------------------+-----------------------+-----------------------+
      |    %>           }    |    bitor         |    |    or_eq        |=    |
      +----------------------+-----------------------+-----------------------+
      |    <:           [    |     or          ||    |   xor_eq        ^=    |
      +----------------------+-----------------------+-----------------------+
      |    :>           ]    |     xor          ^    |     not          !    |
      +----------------------+-----------------------+-----------------------+
      |    %:           #    |    compl         ~    |   not_eq        !=    |
      +----------------------+-----------------------+-----------------------+
      |   %:%:         ##    |   bitand         &    |                       |
      +----------------------+-----------------------+-----------------------+
    


  • Ach ja, das hatte ich vergessen. Aber wieso funktioniert das dann mit Visual C++ 6? Naja das setzt den ISO-Standard ja nicht komplett um (scheint jedenfalls so).

    Danke.

    Felix



  • falls hier jemand modmäßiges reinschaut: der beitrag wäre was für die faq!
    🙂


Anmelden zum Antworten