probobleme beim konstruktor
-
Hi hab folgene fehler ausgabe:
quadrat.cpp:29: Fehler: Elemente des Feldes »quad part [(((unsigned int)(((int)(a * a)) + -0x00000000000000001)) + 1)]« haben unvollständigen Typ
quadrat.cpp:29: Fehler: Speichergröße von »part« ist unbekanntbei folgenem code
a=(int)aa;
quad part[a*a];for( int i=0; i<=a; i++ )
{
part[i](a,i);
}
weiss nich mehr weiter plz help
-
Zeit mal bitte den gesamten Code. Was ist a, aa, quad?
Und bist du sicher, dass du in der Schleife den ()-Operator aufrufen willst? - Respektive stellst du den bereit?
-
Ist quad vollständig bekannt? Nicht nur eine Vorwärtsdeklaration, sondern wirklich den Header eingebunden?
Grüssli
-
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
int vergleich=0;
bool refresh(int a);class quad;
int main( int argc, char *argv[] )
{
if( argc != 2 )
{
cerr<<"Benutzung: quadrat seitenlaenge"<<endl;
cin.sync();
cin.clear();
cin.get();
return 0;
}
int a;
double aa;
bool wahr=1;
istringstream in;
in.str(argv[1]);
in >> aa;
a=(int)aa;
quad[] part = new quad[a*a];for( int i=0; i<=a; i++ )
{
part[i](a,i);
}
while( wahr==0 )
{wahr=refresh(a);
}
cin.sync();
cin.clear();
cin.get();
return 1;
}
/*************************************************************************************************************/
bool refresh(int a)
{for( int i=0; i<a; ++i )
{if ( !(part[i].aussen()) )
{
part[i].wert( (( part[i-10]+part[i+10]+part[i-1]+part[i+1] )/4) );
}}
if ( vergleich > 0 )
{vergleich=0;
return 0;
}
else
{
return 1;
}
}
/*************************************************************************************************************/
class quad
{
private:
int a, i;
int vorher;//int inh;
int posx;
int posy;
public:
quad()
{
}quad( int funka, int funki )
{
vorher=0;
inh=0;a=funka;
i=funki;
posx = i%a;
posy = (i-posx)/a;
wert( 0 );
}
void wert( int in)
{if( ( (posy == a)&&(posx != a) )||( posx == 1) )//exception 1
{
inh = 100;
}
else if ( (posx == a)||(posy==a)||(posy==1) )//exception 2
{
inh = 0;
}
else if (inh != in)
{
vergleich++;
vorher=inh;
inh=in;}
}
int inho()
{return inh;
}
bool aussen()
{
if( (posx==1)||(posx==a)||(posy==1)||(posy==a) )
{
return 1;
}
else
{
return 0;
}
}
};
/*************************************************************************************************************/
-
hab danach natürlich noch probleme mit dem gültigkeitsbereich bei "refresh" das wollte ich aber später angehen
-
1. Bitte CPP-Tags benutzen.
2. Aus deinem Code geht das hervor, was ich gesagt habe. Zum Zeitpunkt wo du das Array haben willst, ist quad unbekannt, bzw. nur eine Forward Declaration ist vorhanden. Diese reicht aber nicht aus, um ein Objekt davon zu bauen, die Klasse muss vollständig bekannt sein.Grüssli
-
Dravere schrieb:
1. Bitte CPP-Tags benutzen.
2. Aus deinem Code geht das hervor, was ich gesagt habe. Zum Zeitpunkt wo du das Array haben willst, ist quad unbekannt, bzw. nur eine Forward Declaration ist vorhanden. Diese reicht aber nicht aus, um ein Objekt davon zu bauen, die Klasse muss vollständig bekannt sein.Grüssli
hi versteh leider nich richtig wie ich das anstelle (außer punkt 1)
-
Die Klassendefinition von quad muss vor der Benutzung stehen. Also am besten in eine Headerfile und dann includen.