PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : iostream.h???



panzi
01-03-2003, 20:30
Was muss ich statt iostream.h unter Linux (bzw. gcc 3.2.1) verwenden?
Wenn ich iostream.h angebe kommt folgende Meldung:

In file included from /usr/include/c++/3.2/backward/iostream.h:31,
from polym.cpp:4:
/usr/include/c++/3.2/backward/backward_warning.h:32:2: warning: #warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the <X> header for the <X.h> header for C++ includes, or <sstream> instead of the deprecated header <strstream.h>. To disable this warning use -Wno-deprecated.

Also hab ich iostream (ohne .h) angegeben, doch dann kommt das:

polym.cpp: In member function `virtual void Horse::Gallop()':
polym.cpp:10: `cout' undeclared (first use this function)
polym.cpp:10: (Each undeclared identifier is reported only once for each function it appears in.)
polym.cpp: In function `int main()':
polym.cpp:32: `cin' undeclared (first use this function)

Sprich in iostream ist cin und cout nicht deklariert! Wo dann?

thx4help

arthur
02-03-2003, 08:40
alle standard c++ bibiotheken liegen im namespace std,
also schreib etweder am anfang deines programms


using namespace std;

oder
benutzte die sachen mit expliziten namespace angabe


std::cout<<.....<<std::endl;

micha
02-03-2003, 11:09
Hi,

dritte Möglichkeit wäre, nur explizit die Funktionen zu benutzen, die Du auch wirklich benötigst, anstatt den ganzen namespace std zu verwenden:



#include <iostream>

using std::cout;
using std::endl;

int main (void)
{
cout << "" << endl;
}


Gruß micha

JoelH
04-03-2003, 16:59
@michi
Für was soll dass den gut sein ?

@panzi
Was die anderen vergessen haben zu sagen ist, dass sich der C++ Standard verändert hat und der gcc seit 3.x + dass auch kennt, bzw. sagt. Sprich, iostream.h ist nicht falsch sondern, wie der Compiler schon sagt, antiquiert.

Du kannst es also ignorieren aber bei neuen Programmprojekten beherzigen was anda_skoa schrieb, benutz den neuen Standard.

micha
04-03-2003, 18:23
@JoelH

Die Einführung der namespace's muss ja irgendeinen Sinn haben, denn wenn man bspw. bei iostream den komplette std-namespace benutzt, könnte man ebensogut wie früher die iostream.h einbinden.
Soweit ich das verstanden habe, ist ein namespace dazu da, eventuell gleichnamige Funktionen voneinander abzugrenzen und damit Namenskonflikte zu verhindern.

Gruß micha

anda_skoa
04-03-2003, 19:05
Original geschrieben von micha
@JoelH

Die Einführung der namespace's muss ja irgendeinen Sinn haben, denn wenn man bspw. bei iostream den komplette std-namespace benutzt, könnte man ebensogut wie früher die iostream.h einbinden.
Soweit ich das verstanden habe, ist ein namespace dazu da, eventuell gleichnamige Funktionen voneinander abzugrenzen und damit Namenskonflikte zu verhindern.


Das ist schon korrekt.
Allerdings kann man den namespace schon ganz öffnen, wenn man sicher ist, dass man nur Funktionen aus einem verwendet.

Vorallem bei kleineren Testprogrammen.

Aber du hast schon recht, man sollte sich der Thematik und ihrer Implikationen bewusst sein.

Ciao,
_

JoelH
04-03-2003, 20:05
@micha
Natürlich hast du recht genau aus den von dir angeführten Gründen wurden die Namespaces eingeführt. Allerdings ist es ja so, dass panzi das Programm schon hatte, es also programmiert wurde bevor es den Namespace gab, sprich er wohl auch in keinen Namenskonflikt geraten wird. Nicht umsonst hab ich geschrieben dass er es machen kann aber nicht mehr machen sollte sondern sich an die neuen Standards/Konventionen halten soll !

micha
04-03-2003, 21:42
Mein Beitrag war der Vollständigkeit halber gedacht, da die ursprüngliche Frage lautete, wie man über iostream auf die Funktionen zugreifen kann.
Deshalb hab ich mir auch keine Gedanken darüber gemacht, ob in seinem Programm nun Namenskonflikte auftreten könnten oder nicht, wobei meiner Meinung nach aus der Frage nicht ersichtlich ist, dass das Programm aus Zeiten ohne Namespaces stammt ;)

Gruß micha