Compiler Fehler!! Bitte helfen für mein Verständis!!
-
Sorry, daran liegt es leider nicht...!
Danke für den Hinweis...
-
Kleiner Auszug aus dem Tutorial für's C++-Forum:
Poste den relevanten Originalcode; Auslassungspunkte und Anmerkungen als C++-Kommentare; das Ganze ordentlich eingerückt, in cpp-Tags eingehüllt.
-
Hallo !
Ich habe den Quellcode im Anhang beigelegt!Anhand der fett gedruckten Textzeilen erkannt man die relevanten Stellen, welche
die FehlermeldungCUIMbt.h:32: error: 'Funktion' is used as a type, but is not defined as
a typehervorrufen!
Ich hoffe es gibt Euch die Möglichkeit mir weiterzuhelfen!
Mfg Bernd T.
#ifndef CUIMBT_H
#define CUIMBT_H#include "MUIWidget.h"
#include "CDesktop.h"class CUIMbt : public MUIWidget
{
public:CUIMbt( const CUIRect &aRectangle, int aXPos , int aYPos );
virtual void Draw();
virtual void PXDraw(int aXPos, int aYPos);
virtual bool HandlePenEvent( MInputReader::TTouchEventData& aData );
virtual bool HandleKeyEvent( MInputReader::TKeyEventData& aData );CDesktop::TColor ActivColor;
CDesktop::TColor BackColor;
CDesktop::TColor DisabledColor;
CDesktop::TColor FontColor;CUIMbt();
CUIMbt( const CUIMbt& );
CUIMbt& operator=( const CUIMbt& );void Draw( CDesktop::TColor aFontColor, CDesktop::TColor aBackColor );
void Draw( CDesktop::TColor aBackColor);private:
Funktion testxy;protected:
bool iPressed;
private:int aX;
int aY;};
#endif
#include <stdio.h>
#include <unistd.h>#include "CUIMbt.h"
#include "MVirtualScreen.h"
#include "MFrameBuffer.h"CUIMbt::CUIMbt ( const CUIRect &aRectangle, int aXPos , int aYPos ) : MUIWidget( aRectangle, NULL, NULL )
{ PXDraw(aXPos, aYPos);
}void CUIMbt::PXDraw(int aXPos, int aYPos )
{ aX = aXPos;
aY = aYPos;testxy.SetRufII(); // Aufruf !!
}void CUIMbt::Draw(CDesktop::TColor aActivColor, CDesktop::TColor aBackColor)
{
CDesktop::Rect(iFrameBuffer,
iRectangle.iTopLeft.iX,
iRectangle.iTopLeft.iY,
iRectangle.iTopLeft.iX + iRectangle.iSize.iX,
iRectangle.iTopLeft.iY + iRectangle.iSize.iY,
aBackColor);CDesktop::PutPixel(iFrameBuffer, aX, aY, CDesktop::ColorWhite);
}void CUIMbt::Draw()
{ const CDesktop::TColor tmpFontColor = CDesktop::ColorWhite;Draw( ( iPressed ) ? BackColor :tmpFontColor,
( iPressed ) ? tmpFontColor: BackColor ) ;
}bool CUIMbt::HandlePenEvent( MInputReader::TTouchEventData& aData )
{
}bool CUIMbt::HandleKeyEvent( MInputReader::TKeyEventData& aData )
{
}#include <stdio.h>
#include <stdlib.h>#include "TTUIInit.h"
#include "TTUIBase.h"
#include "CUIScreen.h"
#include "CUILabel.h"
#include "UIListBoxes.h"
#include "CUIEventLoop.h"
#include "CUIButton.h"
#include "CUICheckBox.h"
#include "CUIInput.h"#include "CDesktop.h"
#include "CUIWidgetGroup.h"
#include "sdkconstants.h"#include "CUIMbt.h"
CUIScreen *screen = NULL;
CUIMbt *pxtest = NULL;class Funktion
{
public:
void SetRufII() {};
void ResetRufII() {};
};int TTUIInit(int argc, char** argv) {
screen = new CUIScreen( MColorScheme::KSchemeLocBrowser );
pxtest = new CUIMbt(CUIRect(300,20,100,50),45,60);
screen->AddWidget(pxtest);
CUIEventLoop::GetEventLoop().SetScreen(screen);
return 0;
}
-
wenn du jetzt noch sagst, was in welcher Datei ist ...
-
Ok ! Kein Problem...
Die erste Quellcode ist die CUIMbt.h,
der zweite Quellcode ist die CUIMbt.cpp
der dritte Quellcode ist die TTGui.cpp Datei.So hängt der Quellcode zusammen!
Ich hoffe, das hilft weiter ?
Mfg Bernd T.
-
Lern Syntaxhighlighting! Das sind diese tollen bunten Kästchen, in denen andere manchmal ihre Sourcen posten. Da kann man dann auch pro Datei ein Kästchen benutzen, und die Einrückung sieht man auch. Wurde Dir aber schon mehrmals nahegelegt.
-
Ich habe es versucht mit den tollen Kästchen, aber irgendwie habe ich es nicht hinbekommen. War wohl das falsche Kästchen!
Da habe ich es halt so gemacht, aber ich geben Dir recht !
Schöner ist es!
-
tja du hast deine class Funktion in der CPP Datei deklariert, nachdem Include von CUIMBT.H ... woher soll CUIMbt wissen, dass es die class Funktion gibt?
mach ne eigene HEader meinetwegen funktion.h, packe die Klassendeklaration dahinein und binde die Header in CUIMBT.H (und überall, wo du die class Funktion sonst noch brauchst) ein ...
Füge das nächste mal deinen Code in Cpp-Tags ein
[ cpp ] mein C++ Code [ /cpp ]
(lasse einfach die Leerzeichen innerhalb der eckigen Klammern weg, dann funktionierts wie gewünscht.
-
@ Checker&Murckser
Danke für die Antwort !
Du hattest recht, so funktioniert es!
Nur warum muss ich denn die Klass in einer Header Datei schreiben.
Funktional ist das auf jeden Fall gut und übersichtlich.
Rein formal hätte ich jetzt behauptet, CUIMbt kennt die Klasse Funktion.Mfg Bernd T.
-
Bernd T. schrieb:
...
Rein formal hätte ich jetzt behauptet, CUIMbt kennt die Klasse Funktion...Und woher ?
Es kommt übrigens (auch "formal") nicht darauf an, wen oder was eine Klasse kennt, sondern was der Compiler kennt ... und der kann nur kennen, was man ihm mitteilt... und die "Mitteilungsform für den Compiler" nennt man Sourcecode (von Compilerswitches mal abgesehen) ...Gruß,
Simon2.