Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: Mikä ihmeen namespace?

Azure [12.04.2007 16:18:09]

#

Eli mikä? "Kaikki elementit tai rakenneosat C++ kirjastossa ovat tässä merkkijonoluokassa jota kutsutaan nimellä önamespace ö "

Onko se jonkilainen systeemi(avaruus) jossa on kaikki mahdolliset C++ standardi kirjaston rakenneosat. Jolloin kääntäjä tunnistaa esim: olion "cout" nimen?

Metabolix [12.04.2007 18:14:43]

#

Suorana käännöksenä namespace on nimiavaruus. Se siis toimii näin:

#include <iostream>

namespace Jotain {
    int muuttuja;
    struct mun_tyyppi { int a, b, c; };
}

namespace Muita {
    int muuttuja;
    struct mun_tyyppi { int a, b, c, d, e, f; };
}

// Ja nyt on siis määritelty kahdet eri asiat, tässäkin siis kaksi eri muuttujaa:
Jotain::muuttuja = 1;
Muita::muuttuja = 2;

// cout (ja muut C++:n standardikirjaston asiat) kuuluvat std-nimiavaruuteen.
std::cout << (Jotain::muuttuja + Muita::muuttuja); // 1+2 = 3

// Muita::mun_tyyppi sisältää kuusi lukua ja Jotain::mun_tyyppi vain kolme, joten niiden kokojen suhde on luultavasti 6/3 = 2
std::cout << (sizeof(Muita::mun_tyyppi) / sizeof(Jotain::mun_tyyppi));

// Näin muuttuja tarkoittaa samaa kuin Jotain::muuttuja.
using Jotain::muuttuja;
std::cout << (muuttuja + Muita::muuttuja); // yhä 1+2 = 3.

// Tämän jälkeen kaikki Jotain-nimiavaruuden sisältö toimii ilman etuliitettä Jotain::
using namespace Jotain;
std::cout << (sizeof(Muita::mun_tyyppi) / sizeof(mun_tyyppi)); // 6/3 = 2.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta