www.matheraum.de
Das Matheforum.
Das Matheforum des MatheRaum.

Für Schüler, Studenten, Lehrer, Mathematik-Interessierte.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Mathe
  Status Schulmathe
    Status Primarstufe
    Status Mathe Klassen 5-7
    Status Mathe Klassen 8-10
    Status Oberstufenmathe
    Status Mathe-Wettbewerbe
    Status Sonstiges
  Status Hochschulmathe
    Status Uni-Analysis
    Status Uni-Lin. Algebra
    Status Algebra+Zahlentheo.
    Status Diskrete Mathematik
    Status Fachdidaktik
    Status Finanz+Versicherung
    Status Logik+Mengenlehre
    Status Numerik
    Status Uni-Stochastik
    Status Topologie+Geometrie
    Status Uni-Sonstiges
  Status Mathe-Vorkurse
    Status Organisatorisches
    Status Schule
    Status Universität
  Status Mathe-Software
    Status Derive
    Status DynaGeo
    Status FunkyPlot
    Status GeoGebra
    Status LaTeX
    Status Maple
    Status MathCad
    Status Mathematica
    Status Matlab
    Status Maxima
    Status MuPad
    Status Taschenrechner

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Neuerdings beta neu
 Forum...
 vorwissen...
 vorkurse...
 Werkzeuge...
 Nachhilfevermittlung beta...
 Online-Spiele beta
 Suchen
 Verein...
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Mathe-Seiten:Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
StartseiteMatheForenC/C++C2039-Error
Foren für weitere Schulfächer findest Du auf www.vorhilfe.de z.B. Informatik • Physik • Technik • Biologie • Chemie
Forum "C/C++" - C2039-Error
C2039-Error < C/C++ < Programmiersprachen < Praxis < Informatik < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "C/C++"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

C2039-Error: Vorschlag
Status: (Frage) beantwortet Status 
Datum: 13:29 Do 14.01.2010
Autor: qsxqsx

Hallo,

Vielleicht sage ich erstmals grundsätzlich um was es sich handelt: Ich habe die Aufgabe ein Sudokulöser zu programmieren. Ich bin jetzt auch fast fertig, hab aber noch einen Compilererror, bei dem ich durch suchen im Internet einfach nicht schlauer werden kann.

Ich habe zuerst mal das Programm die leeren Felder suchen lassen, und mir gesagt, für jedes Feld mach ich ein struct, welches die x-koordinate, die y-koordinate des Feldes enthält und in einem Array die möglichen Zahlen für dieses Feld reinschreibe, damit ich nacher bequem darauf zugreifen kann.

Es gibt also ein Array, welches soviele structs wie leere Felder beinhalten soll(dieses Array ist dynamisch), als auch in jedem dieser structs wieder in Array(nicht dynamisch) mit den möglichen Nummern.

struct emptycells
{
int xc; // x-koordinate
int yc ; // y-koordinate
int possiblenumbers [9] = {1,2,3,4,5,6,7,8,9};
// array with the possible numbers
};

error C2039: 'possiblenumbers': Ist kein Element von 'solve::emptycells'
Siehe Deklaration von 'solve::emptycells'

...bei diesem struct soll jetzt was falsch sein, oder zumindest der Array possiblenumbers! Ich habe keine Ahnung wieso!

Auf einer Website stand zu diesem Fehler folgendes:
"Sie versuchen fälschlicherweise, einen Bezeichner als Element einer Struktur zu behandeln. Überprüfen sie ihre Deklarationen"


Wäre sehr froh über nen Tipp, wenner auch noch so klein ist...

Gruss

        
Bezug
C2039-Error: Antwort
Status: (Antwort) fertig Status 
Datum: 16:55 Do 14.01.2010
Autor: Frasier

Hallo,
die Felder einer struct werden bei deren Erzeugung initialisiert.
Beispiel
#include <stdio.h>
#include <stdlib.h>

int main()
{
    struct emptycells {
        int xc; // x-koordinate
        int yc; // y-koordinate
        int possiblenumbers[9];
    };
    int i;
    struct emptycells c1={10,20,{3,6,0,8}};
    printf("x: %d, y: %d, moegliche Zahlen: ",c1.xc,c1.yc);
    for ( i=0; i<sizeof(c1.possiblenumbers)/sizeof(int); i++ )
        printf("%d ", c1.possiblenumbers[i]);

    return 0;
}

Was der Verweis auf solve zu bedeuten hat, keine Ahnung.
lg
F.

Bezug
        
Bezug
C2039-Error: Blanks
Status: (Antwort) fertig Status 
Datum: 17:19 Do 14.01.2010
Autor: Infinit

Hallo qsxqsx,
soweit ich weiss, darf bei der Felddeklarartion kein Blank zwischen dem Feldnamen und der Feldgröße sein.
Viele Grüße,
Infinit

Bezug
                
Bezug
C2039-Error: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 18:52 Do 14.01.2010
Autor: qsxqsx

Ich danke beiden!


Also der Vorschlag von Frasier zeigt mir eigentlich nur, dass ich es vom Prinzip richtig gemacht habe. Habs jetzt noch ohne das Blank versucht, nützt auch nichts! Was ich herausgefunden habe ist, dass wenn ich
nur "int possiblenumbers[9];" schreibe (ohne die Geschweifte Klammer mit den Zahlen), dass es dann compiliert! ...nur ergeben sich dann eben andere Probleme...
Da Frasier sein Beispiel richtig ist, er aber anders auf die Elemente zugreift, kann es nur sein, dass ich da nachher falsch aufs struct bzw. den Array im struct zugreife.
Deshalb zeige ich hier wie ich den Pointer auf das struct mache und benutze, als auch wie ich den Array im struct benutze:

emptycells *cellpointer;  //pointer auf struct,emptycells ist das struct
cellpointer = new emptycells;

((cellpointer + u )->possiblenumbers[g]) // so greife ich oft ein Element im Array, ist das richtig?! das u soll den pointer der auf das erste struct zeigt zu einem beliebigen struct setzen.
Bei diesem Zugriff tritt eben diese Fehlermeldung auf: 'possiblenumbers': Ist kein Element von 'solve::emptycells'
Ich habe mir schon überlegt, dass das possiblenumbers irgendwie nicht "global" definiert ist und ein "extern" vornedran gemacht...nütz auch nichts...

Ist doch eigentlich alles richtig, oder?

Gruss qsxqsx




Bezug
                        
Bezug
C2039-Error: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 19:33 Do 14.01.2010
Autor: qsxqsx

Ich wollte sagen, dass es jetzt geht!

Das struct hat hier einen Konstruktor gebraucht, welchen man normalerweise nur bei Klassen braucht. Aufjedenfall geht es!

Hier der Konstruktor, falls es jemandem hilft:
emptycells() :  xc(), yc()  { for(int i = 0; i < 9;  i++) possiblenumbers[i] = i+1; }

die Frage kann auf beantwortet gesetzt werden...

Bezug
                                
Bezug
C2039-Error: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 02:46 Fr 15.01.2010
Autor: felixf

Hallo!

> Ich wollte sagen, dass es jetzt geht!
>  
> Das struct hat hier einen Konstruktor gebraucht, welchen
> man normalerweise nur bei Klassen braucht. Aufjedenfall
> geht es!

Genau. Du kannst in einer Strukturdefinition nicht schon Werte vorgeben.

(Strukturen und Klassen sind uebrigens in C++ das gleiche -- der einzige Unterschied ist, dass in Klassen alles private ist soweit nicht anders gesagt, und in Strukturen alles public.)

LG Felix


Bezug
                
Bezug
C2039-Error: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 02:44 Fr 15.01.2010
Autor: felixf

Hallo Infinit,

> soweit ich weiss, darf bei der Felddeklarartion kein Blank
> zwischen dem Feldnamen und der Feldgröße sein.

das stimmt nicht, da darf man beliebig viele Leerzeichen einfuegen. Darf man eigentlich so gut wie ueberall.

LG Felix


Bezug
                        
Bezug
C2039-Error: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 08:40 Sa 16.01.2010
Autor: Infinit

Hallo felix,
danke für diese Info. Dann sind die heutigen Compiler nicht mehr so kniggerig wie noch zu meinen Studienzeiten.
Viele Grüße,
Infinit

Bezug
Ansicht: [ geschachtelt ] | ^ Forum "C/C++"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
www.matheforum.net
[ Startseite | Forum | Wissen | Kurse | Mitglieder | Team | Impressum ]