|
| Hvad er forkert i dette kode (Arv) Fra : Niels |
Dato : 14-09-03 11:02 |
|
Hej NG
Jeg får følgende fejl ved compiling af nedenstående kode:
Figur.cpp
error C2146: syntax error : missing ';' before identifier 'udskrivfigur'
error C2065: 'udskrivfigur' : undeclared identifier
Error executing cl.exe.
----------------------------------------------
Figur.cpp
----------------------------------------------
#include <iostream>
using namespace std;
#include "figur.h"
void main()
{
punkt nytpunkt(1, 2);
nytpunkt udskrivpunkt();
}
----------------------------------------------
Figur.h
----------------------------------------------
#ifndef Figur
#define Figur
class figur
{
private:
int punktx;
int punkty;
public:
figur(int x, int y):punktx(x), punkty(y){}
void udskrivfigur(void);
};
class punkt : public figur
{
private:
public:
punkt(int x, int y):figur(x, y){}
};
class trekant : public figur
{
private:
int punktz;
public:
trekant(int x, int y, int z):figur(x,y), punktz(z){}
};
void figur::udskrivfigur(void)
{
cout <<"Udskrivning figur"<< endl;
cout <<punktx;
cout <<punkty;
}
#endif;
-----------------------------------
Kan nogen hjælpe og komme med en løsning
Mange tak
| |
Ivan Johansen (14-09-2003)
| Kommentar Fra : Ivan Johansen |
Dato : 14-09-03 11:29 |
|
Niels wrote:
> Jeg får følgende fejl ved compiling af nedenstående kode:
I hvilken linie?
> #include <iostream>
> using namespace std;
>
> #include "figur.h"
"using namespace" bør altid placeres efter alle includes.
> nytpunkt udskrivpunkt();
Jeg kan ikke regne ud hvad denne linie skal gøre. Det ligner en
funktionserklæring, men du har ikke nogen type der hedder nytpunkt.
Ivan Johansen
| |
Niels (14-09-2003)
| Kommentar Fra : Niels |
Dato : 14-09-03 11:50 |
|
> > Jeg får følgende fejl ved compiling af nedenstående kode:
> I hvilken linie?
>
> > #include <iostream>
> > using namespace std;
> >
> > #include "figur.h"
>
> "using namespace" bør altid placeres efter alle includes.
Ok, tak
> > nytpunkt udskrivpunkt();
Ups. Det var også en fejl.
> Jeg kan ikke regne ud hvad denne linie skal gøre. Det ligner en
> funktionserklæring, men du har ikke nogen type der hedder nytpunkt.
>
> Ivan Johansen
De nye filer ser sådanne ud:
Fejlen kommer i nyfigur udskrivfigur();
-----------------------------------------------------
Figur.cpp
-----------------------------------------------------
#include <iostream>
#include "figur.h"
using namespace std;
void main()
{
figur nyfigur(2,1);
nyfigur udskrivfigur();
}
-----------------------------------------------------
Figur.h
-----------------------------------------------------
#ifndef Figur
#define Figur
#include <iostream>
using namespace std;
class figur
{
private:
int punktx;
int punkty;
public:
figur(int x, int y):punktx(x), punkty(y){}
void udskrivfigur(void);
};
class punkt : public figur
{
private:
public:
punkt(int x, int y):figur(x, y){}
void udskrivpunkt(void);
};
class trekant : public figur
{
private:
int punktz;
public:
trekant(int x, int y, int z):figur(x,y), punktz(z){}
void udskrivtrekant(void);
};
void figur::udskrivfigur(void)
{
cout <<"Udskrivning figur"<< endl;
cout <<punktx;
cout <<punkty;
}
#endif;
| |
Ivan Johansen (14-09-2003)
| Kommentar Fra : Ivan Johansen |
Dato : 14-09-03 12:07 |
|
Niels wrote:
> nyfigur udskrivfigur();
Du mener sandsynligvis:
nyfigur.udskrivfigur();
Ivan Johansen
| |
Per Abrahamsen (15-09-2003)
| Kommentar Fra : Per Abrahamsen |
Dato : 15-09-03 16:17 |
|
"Niels" <niels.h@spoerg.dk> writes:
> void main()
int main () // Hvorfor ikke skrive i C++?
Du kan så evt. tilføje en "return 0" i slutningen af main hvis din
compiler brokker sig.
> nyfigur udskrivfigur();
nyfigur.udskrivfigur();
> #define Figur
Det kan let giver problemer da "Figur" let kan forekomme som
almindelig identifier. Jeg vil foreslå
#define FIGUR_H
i stedet, eller en anden konvention der giver identifiers det er
usandsynligt forekommer i almindelig kode.
> void figur::udskrivfigur(void)
> {
> cout <<"Udskrivning figur"<< endl;
> cout <<punktx;
> cout <<punkty;
> }
Flyt den til .cpp filen, så slipper du også for at inkludere
<iostream> (og namespace std) i headerfilen.
| |
|
|