PDA

Visualizza la versione completa : [C++] Problemi in compilazione progetto


Alcott
10-10-2006, 13:16
Ciao a tutti.
Probabilmente, anzi sicuramente, il mio è un problema da neofita del C++... quindi vi chiedo in anticipo di non spararmi per la mia domanda :D

Sto provando a creare un semplice progetto di Console in C++ (con DevCPP) composto da tre file: Carta.h, Carta.cpp e main.cpp.

Vi riporto poco e semplice codice.

Carta.h:
<code>
class Carta{
int numero;

public:
Carta(int num);
void stampaCarta();
};
</code>

Carta.cpp:
<code>
#include "Carta.h"
#include <iostream>

using namespace std;

Carta(int num){
numero = num;
}

void Carta::stampaCarta(){
cout << "Numero: " << numero << endl;
}
</code>

main.cpp:
<code>
#include <cstdlib>
#include <iostream>
#include "Carta.h"

using namespace std;

int main()
{
Carta carta1;
Carta carta2;

carta1.Carta(5);
carta2.Carta(7);

carta1.stampaCarta();
carta2.stampaCarta();

system("PAUSE");
return EXIT_SUCCESS;
}
</code>

e questo è l'errore in compilazione:
<code>
5 C:\Dev-Cpp\My Projects\Prova2\main.cpp expected unqualified-id before "using"
5 C:\Dev-Cpp\My Projects\Prova2\main.cpp expected `,' or `;' before "using"
C:\Dev-Cpp\My Projects\Prova2\main.cpp In function `int main()':
9 C:\Dev-Cpp\My Projects\Prova2\main.cpp no matching function for call to `Carta::Carta()'
note C:\Dev-Cpp\My Projects\Prova2\Carta.h:1 candidates are: Carta::Carta(const Carta&)
note C:\Dev-Cpp\My Projects\Prova2\Carta.h:1 Carta::Carta(int)
10 C:\Dev-Cpp\My Projects\Prova2\main.cpp no matching function for call to `Carta::Carta()'
note C:\Dev-Cpp\My Projects\Prova2\Carta.h:1 candidates are: Carta::Carta(const Carta&)
note C:\Dev-Cpp\My Projects\Prova2\Carta.h:1 Carta::Carta(int)
12 C:\Dev-Cpp\My Projects\Prova2\main.cpp invalid use of `class Carta'
13 C:\Dev-Cpp\My Projects\Prova2\main.cpp invalid use of `class Carta'
C:\Dev-Cpp\My Projects\Prova2\Makefile.win [Build Error] [main.o] Error 1
</code>

Qualcuno può illuminarmi?
Thx :ciauz:

oregon
10-10-2006, 14:07
Alcune correzioni ...

In carta.cpp deve essere



Carta::Carta(int num){ // indicare il nome della classe per il costruttore


In main.cpp deve essere



Carta carta1(5); // non esiste un costruttore di default ...
// usare quello con un parametro
Carta carta2(7); // non esiste un costruttore di default ...
// usare quello con un parametro

//carta1.Carta(5); // eliminare
//carta2.Carta(7); // eliminare


P.S. I tag del codice sono tra parentesi quadre e non angolari ...

Alcott
10-10-2006, 14:21
Ah ecco cos'era, ma abituato a Java non l'avrei mai capito :D

Ho comunque ancora un errore dato dall' USING NAMASPACE.

5 C:\Dev-Cpp\My Projects\Prova2\main.cpp expected unqualified-id before "using"
5 C:\Dev-Cpp\My Projects\Prova2\main.cpp expected `,' or `;' before "using"
C:\Dev-Cpp\My Projects\Prova2\Makefile.win [Build Error] [main.o] Error 1

ps: sono cambiati i tag per il codice? :confused:

MItaly
10-10-2006, 17:06
In fondo alla dichiarazione della classe contenuta in carta.h devi inserire un punto e virgola.

Alcott
10-10-2006, 18:20
Ne serve un altro?

MItaly
10-10-2006, 19:28
Ops... ho letto male io. Scusa.

oregon
10-10-2006, 20:23
Originariamente inviato da Alcott
Ah ecco cos'era, ma abituato a Java non l'avrei mai capito :D

Ho comunque ancora un errore dato dall' USING NAMASPACE.

5 C:\Dev-Cpp\My Projects\Prova2\main.cpp expected unqualified-id before "using"
5 C:\Dev-Cpp\My Projects\Prova2\main.cpp expected `,' or `;' before "using"
C:\Dev-Cpp\My Projects\Prova2\Makefile.win [Build Error] [main.o] Error 1

ps: sono cambiati i tag per il codice? :confused:

Con le correzioni che ti ho suggerito, non ho piu' errori di compilazione ...

Alcott
11-10-2006, 11:06
Ho provato a creare un nuovo progetto e (semplicemente facendo il copia/incolla apportando le modifiche che mi hai indicato) ora va...

Chissà cosa avrà combinato il compilatore :confused:

Grazie a tutti per l'aiuto :ciauz:

Loading