Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » g++ != C++ Standard ?

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
09.01.2006, 09:45 Uhr
J-jayz-Z
Perl Crack ala Carte
(Operator)


Hi,
mir ist etwas aufgefallen, was den C++ Standard und g++ angeht.
Stroustrup schreibt ja in seinem Buch "Die C++ Programmiersprache", das es dem Standard entspricht.
Mir sind 2 Dinge in der neuesten Auflage aufgefallen, die g++ nicht übersetzt.
1.) Mit struct selbst erstellte Datentypen in templates funktionieren nicht

C++:
struct foo {
int bar;
int blubb;
};
vector<foo> lala(2);

Das will er nicht übersetzen. Das ist nicht nur bei vector so, auch bei anderen templates.

2.) Globalisiertes Ansprechen von Variablen mit ::

C++:
int x = 4;
{
  int x = 3;
  std::cout << ::x << x << std::endl;
}


Was haltet Ihr davon ? ? ?
Die Fehlermeldungen von g++ habe ich leider nicht parat, da ich zuhause Momentan kein Internet habe ...

EDIT: Typo im struct
--
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 09.01.2006 um 11:04 Uhr von J-jayz-Z editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
09.01.2006, 11:12 Uhr
virtual
Sexiest Bit alive
(Operator)


Das obere Beispiel geht definitiv auch mit dem g++, bei dem unteren kommt darauf an, was du jetzt der Kürzewegen fortgelassen hast:


C++:
void f() {
   int x = 4;
   {
      int x = 3;
      std::cout << ::x << x << std::endl;
   }
}


Darf nicht funktionieren, weil beide x lokal ist.


C++:
int x = 4;
void f() {
  int x = 3;
  std::cout << ::x << x << std::endl;
}


funktioniert, was auch korrekt ist.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
09.01.2006, 11:30 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)



Zitat von virtual:
Darf nicht funktionieren, weil beide x lokal ist.


Kannst du das mal bitte näher erklären warum das nicht funktionieren darf? Es sind ja trotzdem zwei verschiedene Variablen
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
09.01.2006, 12:46 Uhr
typecast
aka loddab
(Operator)


Es sind zwar zwei verschiedene Variablen. Aber beide befinden sich nicht im globalen Namensraum.

Die erste ist nur in f() gueltig, die zweite nur in dem Unterblock. Beide koennen deshalb nicht aus dem globalen Namensraum angesprochen werden (gehoeren also nicht dazu)
--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
09.01.2006, 12:47 Uhr
virtual
Sexiest Bit alive
(Operator)


Der Operator "::" wird als "Scoperesolution Operator" bezeichnet. Dabei steht links davon entweder ein Scope (Namespace, Class) oder eben nix. Wenn da nix steht, ist damit der globale Scope gemeint. Und da beide x nicht global sind, geht das nicht.

::x bedeutet also nicht etwa: nimm das x aus dem "nächsthöheren Scope", sondern wirklich aus dem globalen Scope.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
09.01.2006, 14:15 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


Ah verstehe. Danke
 
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: