You are not logged in.

  • Login

1

Monday, January 15th 2007, 10:36pm

Namensbereiche

Quoted


[a]
Gegeben seien die folgenden verschachtelten Namensbereiche:
namespace General
{
...
namespace Special
{
int x = 0;
...
}
}
Wie kann dann außerhalb dieser Namensbereiche der Variablen x der Wert 10 zugewiesen
werden?
a) x = 10;
b) Special:: x = 10; (eigentlich kein Leerzeichen zwischen :: und x, gibt hier aber Smiley aus!!)
c) General::Special:: x = 10; (eigentlich kein Leerzeichen zwischen :: und x, gibt hier aber Smiley aus!!)


Sind im aktuellen Namensbereich und in einem mit der using-Direktive importierten
Namensbereich gleiche Bezeichner vorhanden, dann
a) gibt der Compiler eine Fehlermeldung aus.
b) führt dies nicht automatisch zu einem Namenskonflikt.
c) kann es zu Mehrdeutigkeiten kommen, wenn einer dieser Bezeichner angesprochen
wird.



ich würde sagen bei:
[a] Lösung: b

und bei
[b] Lösung b und c

richtig?

Gruß cewbie

2

Tuesday, January 16th 2007, 11:36am

Ich würde bei Frage a eher auf Antwort c) tippen - probiers aus :)

3

Tuesday, January 16th 2007, 11:40am

Folgendes kleines Testprogramm:

C Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <stdio.h>
 
namespace General2 {
  int x = 1;
}
 
namespace General {
  namespace Special {
    int x = 2;
 
    using namespace General2;
 
    void test () {
      x = 3;
    }
  }
}
 
int main ()
{
  General::Special::x = 10;
  General::Special::test ();
 
  printf ("General2::x = %d\n", General2::x);
  printf ("General::Special::x = %d\n", General::Special::x);
}

4

Wednesday, January 17th 2007, 1:18pm

vielen Dank

Social bookmarks