Avatar billede palle1976 Nybegynder
10. december 2004 - 13:08 Der er 12 kommentarer og
1 løsning

Problemer med at lave en klasse i visual C++

Jeg er lige startet på at udvikle C++ i Microsoft Visual C++, men har lidt problemer med at komme igang. Jeg er ved at lave en klasse der hedder "XCS". Til denne klasse har jeg lavet en .h fil og en .cpp fil. Når jeg prøver at compilere filerne får jeg følgende fejl:

..\xcs.h(26) : error C2627: member function defined in unnamed class

..\xcs.h(26) : warning C4094: untagged 'class' declared no symbols

..\xcs.cpp(9) : error C2039: 'addFunction1' : is not a member of '`global namespace''

..\xcs.cpp(11) : error C2065: 'function' : undeclared identifier

..\xcs.cpp(15) : error C2039: 'addCustomer1' : is not a member of '`global namespace''

..\xcs.cpp(17) : error C2065: 'customer' : undeclared identifier

..\xcs.cpp(21) : error C2039: 'printXCS1' : is not a member of '`global namespace''

Jeg har startet med at lave et tomt projekt af typen "Win 32 application", er det den rigtige måde at starte ??
Avatar billede jpk Nybegynder
10. december 2004 - 13:11 #1
Prøv at vise koden for din klasse
Avatar billede palle1976 Nybegynder
10. december 2004 - 13:17 #2
//file XCS.h
#ifndef XCS
#define XCS

#include<string>
using namespace std;

class XCS
{
public:

    //skal bruges til at angive hvilken funktionalitet der skal udføres
    void addFunction1(int functionPara);

    //Angiver kundenummeret
    void addCustomer1(int customerPara);

    //bruges til at teste hvad der ligger i objektet
    void printXCS1();

private:

    int function;
    int customer;

};
#endif

---------------------------------------------------------------------------
//File XCS.cpp
#include "XCS.h"
#include <iostream>
using namespace std;



//skal bruges til at angive hvilken funktionalitet der skal udføres
void XCS::addFunction1(int functionPara)
{
    function = functionPara;
}

//Angiver kundenummeret
void XCS::addCustomer1(int customerPara)
{
    customer = customerPara;
}

//bruges til at teste hvad der ligger i objektet
void XCS::printXCS1()
{
    cout << "Function = " << function << endl;
    cout << "Customer = " << customer << endl;
}
Avatar billede jpk Nybegynder
10. december 2004 - 13:26 #3
Måske #ifndef XCS giver problemer, prøv at bruge dette:


#ifndef XCS_H
#define XCS_H

...

#endif
Avatar billede jpk Nybegynder
10. december 2004 - 13:27 #4
Du bruger både XCS som en define og som klassenavn, måske det ikke er helt ok...
Avatar billede palle1976 Nybegynder
10. december 2004 - 13:43 #5
Det hjalp på nogle af fejlene, men nu får jeg i stedet denne fejl:

c:\program files\microsoft visual studio\vc98\include\iostream(14) : error C2143: syntax error : missing ';' before 'namespace'
Avatar billede jpk Nybegynder
10. december 2004 - 13:54 #6
Prøv at fjerne "using namespace std;" fra XCS.cpp
Avatar billede palle1976 Nybegynder
10. december 2004 - 14:00 #7
Det giver samme fejl. Jeg troede også at det var nødvendigt at angive "using namespace std;"
Avatar billede jpk Nybegynder
10. december 2004 - 14:03 #8
Det angiver du jo i headeren...
Avatar billede jpk Nybegynder
10. december 2004 - 14:09 #9
umiddelbart ser koden ellers ok ud, måske der er fejl i noget andet kode..?
Avatar billede palle1976 Nybegynder
10. december 2004 - 14:33 #10
Nu fik jeg det til at virke !!

Jeg havde i forvirringen slettet det semikolon der afslutter header-filen...

Du løste det oprindelige spørgsmål, ved at ændre navnet i #ifndef til XCS_H. Hvis du smider et svar får du nogle points.

Et sidste lille spørgsmål. Hvis jeg includerer noget i headerfilen er det vel aldrig nødvendig at includere det samme i cpp-filen, har jeg ret ?? Men giver det fejl at includere begge steder ??
Avatar billede jpk Nybegynder
10. december 2004 - 14:38 #11
Nej, det ikke nødvendigt at inkludere de samme headers igen i cpp'en...
Det _kan_ give fejl at inkludere begge steder, det afhænger om den header du inkluderer har en guard (#ifndef).
Avatar billede palle1976 Nybegynder
10. december 2004 - 14:40 #12
Tak for hjælpen og god weekend !!!
Avatar billede jpk Nybegynder
10. december 2004 - 14:42 #13
Velbekomme og i lige måde!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester