Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » compiler fehler bei auslagerung

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ] [ 3 ] [ 4 ]
000
24.01.2007, 21:42 Uhr
tobias
hmm....


ich habe versucht meinen 200 zeilen code ein wenig auszulagern, und die menüs jeweils in eine extra datei mit .cpp endung gelagert und diese so geladen:

#include "meinmenu.cpp"

dabei bekomme ich dann compilerfehler... gibt es andere möglichkeiten wodurch ich dieses realisieren könnte? - wäre für mich schon das etwas, weil ich jahrelang so mit php verfahren habe und ich das einfach strukturiert haben möchte mit ausgelagerten code teilen.

Danke
--
Danke
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
24.01.2007, 22:12 Uhr
J-jayz-Z
Perl Crack ala Carte
(Operator)


Normalerweise macht man die Definition in der .h Datei
(foo.h)

C++:
class Foo
{
public:
    Foo();
    void test();
};

und die Deklaration in der cpp Datei
(foo.cpp)

C++:
#include <iostream>
Foo::Foo()
{
    std::cout << "Konstruktor" << std::endl;
}

void Foo::test()
{
    std::cout << "Funktion" << std::endl;
}


Dann musst du die .h includieren um die Funktionen aufzurufen.
Ansonsten solltest du die Fehlermeldung mal posten
--
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="66756e2d736f66742e6465"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'

Dieser Post wurde am 24.01.2007 um 22:13 Uhr von J-jayz-Z editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
25.01.2007, 17:15 Uhr
tobias
hmm....


das ist ja keine funktion.. nur codeteile...
--
Danke
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
25.01.2007, 17:22 Uhr
BoBtheREapER
kein job für nen BoB


wie willst du denn nur code teile auslagern? eine funktion muss auch komplett in einer datei stehen und darf nicht auf mehrere verteilt werden. oder habe ich dich da falsch verstanden?
--
"Zwei Dinge sind unendlich: Das Universum und die menschliche Dummheit. Aber beim Universum bin ich mir nicht ganz sicher." - Albert Einstein
www.blue-xenon.de.vu
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
25.01.2007, 18:28 Uhr
tobias
hmm....


warum darf das nicht? in php funktioniert das auch.. das finde ich eine echte schwachstelle...
--
Danke
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
25.01.2007, 18:34 Uhr
Blubber2063



Schwachstelle, wieso ? Und in Php geht das so natürlich nicht, sondern nur mit include Anweisungen, was letztenendes nichts anderes ist als das einkopieren des Inhalts der Datei an der Stelle. Und das ist eher ein Problem, weil der Code unübersichtlich wird, da ist es doch besser man definiert dann inline funktionen als Codeteile einfach so in einer Datei, völlig zusammenhangslos.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
25.01.2007, 18:51 Uhr
tobias
hmm....


naja, da code ich halt dann "lieber" eine 5000 zeilen datei statt einzelne codeteile auszulagern um z.b. die menüs in einer anderen datei zu haben statt das hautpdatei...
--
Danke
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
25.01.2007, 18:51 Uhr
0xdeadbeef
Gott
(Operator)


LASS DAS BLOß SEIN!

Ganz ernsthaft, mit solchen Scherzen tust du dir keinen Gefallen. Nach spätestens zwei Tagen findest du nicht mehr raus, welche Source-Dateien du eigentlich kompilieren musst und welche nur irgendwo includet werden, und ne IDE kommt damit sowieso ums verrecken nicht zurecht. Sofern du dir nicht deine ganze toolchain zerschießen oder einen Beitrag zum IOCCC leisten willst, fang nicht an, source-Dateien zu includen.

Teil dir den Kram in Module auf, wie es sich gehört. Dann brauchst du auch keine 5000-Zeilen-Datei.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 25.01.2007 um 18:52 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
25.01.2007, 19:58 Uhr
tobias
hmm....


naja, ich hab sowas jetzt:


C++:
....100derte von zeilen ....
BasicFrame::BasicFrame(
    const wxChar *title,
    int xpos, int ypos,
    int width, int height)
    : wxFrame((wxFrame *) NULL,
              -1, title,
              wxPoint(xpos, ypos),
              wxSize(width, height), wxDEFAULT_FRAME_STYLE)
{
    //
    // Menübar erzeugen
    //
    MenuBar = new wxMenuBar();
    
    //
    // Das Datei Menü
    //
    DateiMenu = new wxMenu();
    
    //
    // Elemente zum Menü(Datei) hinzufügen
    //
    DateiMenu->Append(MENU_DATEI, wxT("&Schließen\tCtrl-Q"));
    
    //
    // Das Datei Menü zur Menübar hinzufügen
    //
    MenuBar->Append(DateiMenu, wxT("&Datei"));
    
    //
    // Das Gen Menü
    //
    GenMenu = new wxMenu();
    
    //
    // Elemente zum Menü(Gen) hinzufügen
    //
    GenMenu->Append(MENU_GEN, wxT("&Lösung Generieren\tCtrl-G"));
    
    //
    // Das Gen Menü zur Menübar hinzufügen
    //
    MenuBar->Append(GenMenu, wxT("&Lösung"));
    
    //
    // Das About Menü
    //
    AboutMenu = new wxMenu();
    
    //
    // Elemente zum Menü(About) hinzufügen
    //
    AboutMenu->Append(MENU_ABOUT, wxT("&Info\tCtrl-I"));
    
    //
    // Das About Menü zur Menübar hinzufügen
    //
    MenuBar->Append(AboutMenu, wxT("&About"));
    
    //
    // Die Menübar setzen
    //
    SetMenuBar(MenuBar);
}

BasicFrame::~BasicFrame()
{
}
....100derte von zeilen ....



und den ganzen menükram würd ich sooo gerne auslagern... aber das geht ja nicht :-(
--
Danke
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
25.01.2007, 20:00 Uhr
0xdeadbeef
Gott
(Operator)


Wieso nicht? Schreib den doch in ne eigene Datei, basicframe_menu.cpp oder so, und kompilier das getrennt. Dann besteht deine Klasse basicframe halt aus drei Dateien - basicframe.h, basicframe.cpp und basicframe_menu.cpp - ist zwar etwas ungewöhnlich, aber gehen tut das schon.

Btw, ich würd statt wxChar* eher wxString const & benutzen.

Übgrigens...wenn eine Klasse mehr als 5000 Zeilen beansprucht, ist sie mit hoher Wahrscheinlichkeit hoffnungslos überladen. Wahrscheinlich empfiehlt es sich, den ganzen Kram auf mehrere Klassen aufzuteilen.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 25.01.2007 um 20:03 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ] [ 3 ] [ 4 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: