webForumDet fria alternativet

Problem med klasser

1 svar · 209 visningar · startad av NoiseMaker

NoiseMakerMedlem sedan sep. 2001171 inlägg
#1

Tjenare!

Här kommer ytterligare en nybörjarfråga.. men jag får verkligen inte till det =(
Jag sitter med Borland C++ Builder 5

Jag försöker skapa en ny class i vilken jag skall anropa en funktion som skall rita ut ett steck (eller nått). Därefter vill jag köra en "Delete" på klassen så strecket försvinner.

Tror att jag definierat klassen korrekt, jag har lagt den i en egen fil (Unit2.cpp) men när jag försöker includa denna fil får jag felet "To many types in declaration". Vad kan detta inenbära? Har jag lagt includen på fel ställe?

Tar och skickar med sytnaxen också,, vill verkligen få detta att funka.

Unit1.h

//---------------------------------------------------------------------------

#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include "Unit2.h"

//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
TButton *Button1;
void __fastcall Button1Click(TObject *Sender);
private: // User declarations
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif

Unit1.cpp

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"

//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Form1->linje::SetLine(10,15,100,200);
}
//---------------------------------------------------------------------------

Unit2.h

//---------------------------------------------------------------------------

#ifndef Unit2H
#define Unit2H
//---------------------------------------------------------------------------
class linje
{
public:
void SetLine(int PosSx, int PosSy, int PosEx,int PosEy);
private:
int Sx, Sy, Ex, Ey;
}
#endif

Unit2.cpp

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

//---------------------------------------------------------------------------
void linje::SetLine(int SxPoa, int SyPos, int ExPos,int EyPos)
{
Sx = SxPos;
Sy = SyPos;
Ex = ExPos;
Ey = EyPos;
Form1->Canvas->MoveTo(Sx,Sy);
Form1->Canvas->LineTo(Ex,Ey);
}
#pragma package(smart_init)

aasahMedlem sedan mars 20034 471 inlägg
#2

Re: Problem med klasser

NoiseMaker skrev:

...Unit1.h

...#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include "Unit2.h"
...Unit1.cpp

... #include <vcl.h>

Jag har aldrig använt någon Borland Builder så det kanske är rätt att göra så i det programmet. Men enligt standarden för C++, TROR jag, att det ev kan vara fel på dina include-statements. Det jag har fått lära mig är följande:

* Hjälpfiler slutar på .h (inte .hpp)
* Om man ska includera något som ingår i ett standardbibliotek, tex iostream.h så skriver man #include <iostream> utan .h
* Om man ska inkludera .h fil skriven av en själv, tex Min_klass.h så skriver man #include "Min_klass.h" med .h, men inom "" istället för <>

Det behöver inte ha med ditt problem att göra, men det ser konstigt ut i mina ögon.

126 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
123 ms — hämta tråd, inlägg och bilagor (db)