dwie przestrzenie nazw i różne implementacje
Ostatnio zmodyfikowano 2015-04-21 10:33
arek213 Temat założony przez niniejszego użytkownika |
dwie przestrzenie nazw i różne implementacje » 2015-04-20 19:34:50 MógłBy ktoś podpowiedzieć jak napisać funkcje w przestrzeni nazw impl_Kartoteka ? Bo przestrzeń nazw mockup ma nic nie robić. #include <iostream> #include <string> using namespace std;
namespace kartoteka_Osoba { class Osoba { string ii, nn; public: Osoba( string imie, string nazwisko ) { ii = imie; nn = nazwisko; } string getImie() { return ii; } string GetNazwisko() { return nn; } }; }; namespace kartoteka_mockup_Kartoteka { class Kartoteka { public: void dodaj( kartoteka_Osoba::Osoba ) { } void usun( kartoteka_Osoba::Osoba ) { } int rozmiar() { return 1; } bool CzyZawiera( kartoteka_Osoba::Osoba ) { return true; } kartoteka_Osoba::Osoba * pobierz( int index ) { return new kartoteka_Osoba::Osoba( "Gall", "Anonim" ); } }; }; namespace kartoteka_impl_Kartoteka { class Kartoteka { public: void dodaj( kartoteka_Osoba::Osoba ) { } }; } int main() { using namespace kartoteka_mockup_Kartoteka; Kartoteka kartoteka; kartoteka.rozmiar(); kartoteka.pobierz( 2 ); using namespace kartoteka_impl_Kartoteka; kartoteka_Osoba::Osoba ziomek( "mmm", "asd" ); Kartoteka kartoteka; kartoteka.dodaj( ziomek ); return 0; } I jeśli potem wpisuje komendę using namespace kartoteka_impl_Kartoteka, to jak zrobić aby przy deklaracji obiektu Kartoteka kartoteka nie pokazywało błędu, bo pasuje to również do wcześniejszej przestrzeni nazw. |
|
michal11 |
» 2015-04-20 19:37:34 Nie używaj using namespace. |
|
arek213 Temat założony przez niniejszego użytkownika |
» 2015-04-20 19:44:04 A jak zaimplementować te funkcje w przestrzeni impl_Kartoteka ? |
|
michal11 |
» 2015-04-20 19:55:59 Czyli chodzi ci o to, że deklaracja klasy ma być w mockup ale definicje metod w impl ? Ciekawe podejście, ja bym spróbował zrobić coś takiego: namespace impl { using namespace mockup; };
ale nie mam pewności czy to zadziała, ktoś mądrzejszy musi się wypowiedzieć czy takie coś jest w ogóle możliwe. |
|
arek213 Temat założony przez niniejszego użytkownika |
» 2015-04-20 20:03:53 Nie ma tak zostać jak jest.Chodzi o to aby mieć dwie implementacje interfejsu Kartoteka.Przestrzeń nazw mockup mam mieć "puste" funkcje, natomiast przestrzeń nazw impl_kartoteka już ma mieć funkcję, które mają to robić co mają w nazwie. |
|
arek213 Temat założony przez niniejszego użytkownika |
» 2015-04-20 20:37:54 czyli w przestrzeni impl, funkcja dodaj ma dodawać osoby do kartoteki,ale nie wiem jak to zrobić. |
|
darko202 |
» 2015-04-21 10:33:57 aby uniknąć niejednoznaczności i różnych problemów z widocznością odwołujemy się do operatora :: np. std::cout "tu odwołuje się do funkcji cout z namespace std"; podobnie z klasami class Mebel; { ... void Test {...} ... }
class Krzesla : Mebel; { ... void Test {...} ... }
Krzes ł o k; k.Mebel::Test(); k.Test()
|
|
« 1 » |