Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Eigener Namespace - Linker Error

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 <
000
06.02.2007, 10:59 Uhr
derphilipder



Ich habe einen namespace erstellt, in dem ich einige Datentypen definiert habe.

Beim Linken bekomme ich für jeden dieser Datentypen mehrfach die Meldung, daß er bereits definiert ist.

Bsp.:
WaveFFT error LNK2005: "struct Diag:iagColor Diag::white" (?white@Diag@@3UDiagColor@1@A) bereits in AppFFT.obj definiert


Was mach ich falsch?
--
Konfuzius says: "A man who goes to bed with an itchy asshole is a man who wakes up with stinky finger!"
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
06.02.2007, 12:29 Uhr
J-jayz-Z
Perl Crack ala Carte
(Operator)


Etwas Code wäre nicht schlecht.
Eigentlich funtzt das einwandfrei ...

C++:
#include <iostream>
#include <string>

namespace foo
{
    std::string blubb = "Test1";
}

namespace bar
{
    std::string blubb = "Test2";
}

int main(int argc, char* argv[])
{
    std::cout << bar::blubb << " - " << foo::blubb << std::endl;
    std::cin.get();
    return EXIT_SUCCESS;
}

--
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"'
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
06.02.2007, 14:58 Uhr
Blubber2063



Kann es sein das du die Datei in der du die Deklarationen gemacht hast irgendwo mit #include einbindest und das #ifndef vergessen hast ?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
06.02.2007, 16:40 Uhr
derphilipder




C++:
#ifndef _DIAGNAMESPACE_
#define _DIAGNAMESPACE_

#include <string>

namespace Diag
{
    struct DiagColor
    {
        DiagColor(){}
        DiagColor(int r, int g, int b) : red(r), green(g), blue(b){}
        int red, green, blue;    //RGB-Werte 0-255
    }
    white(255, 255, 255), black(0, 0, 0), red, green, blue, yellow, lightGray;        //Vordefinierte Farben
    
    struct DrawLine//Linie
    {
        DrawLine(){}
        DrawLine(int xs, int ys, int xe, int ye, DiagColor c) : xstart(xs), ystart(ys), xend(xe), yend(ye),  color(c) {}
        int xstart, ystart, xend, yend; DiagColor color;
    };    

    struct Text{std::string text; int xpos, ypos; DiagColor color;};    //Textfeld


}
#endif



--
Konfuzius says: "A man who goes to bed with an itchy asshole is a man who wakes up with stinky finger!"

Dieser Post wurde am 06.02.2007 um 16:49 Uhr von derphilipder editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
06.02.2007, 17:07 Uhr
Blubber2063



Wenn du diese so einbindest glaube ich das du linker fehler kriegst, zumindest wenn du sie in 2 Module includest, weil bei jedem include in ein seperates Modul es die variablen white, ... etc gibt einmal Speicher mit dem Label reserviert wird, baue die deklartation der Variablen in ein Modul und mach in dem header nen extern vor die Variablen, dann sollte es gehen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
06.02.2007, 17:44 Uhr
derphilipder



Ich versteh leider nicht, wie Du das meinst...
--
Konfuzius says: "A man who goes to bed with an itchy asshole is a man who wakes up with stinky finger!"
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
06.02.2007, 21:47 Uhr
FloSoft
Medialer Over-Flow
(Administrator)



C++:
    // in deiner H
    struct DiagColor
    {
        DiagColor(){}
        DiagColor(int r, int g, int b) : red(r), green(g), blue(b){}
        int red, green, blue;    //RGB-Werte 0-255
    };

   extern DiagColor white, black, red, green, blue, yellow, lightGray;




C++:
    // in eine CPP
    Diag::DiagColor white(255, 255, 255), black(0, 0, 0), red, green, blue, yellow, lightGray;


--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
06.02.2007, 22:29 Uhr
derphilipder



Der Fehler ist immer noch da.
Allerdings nur für black und white. Ich dachte es könnte was damit zu tun haben, daß ich sie initialisiere, aber wenn ich das nicht tue, ändert das auch nichts.
--
Konfuzius says: "A man who goes to bed with an itchy asshole is a man who wakes up with stinky finger!"
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
06.02.2007, 22:45 Uhr
derphilipder



Hat sich erledigt, hatte die Deklaration noch woanders stehen.
Vielen Dank!
--
Konfuzius says: "A man who goes to bed with an itchy asshole is a man who wakes up with stinky finger!"
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ 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: