Wskaźniki i przekazywanie obiektów ref class do metod innych form.

Odpowiedz Nowy wątek
2011-07-09 15:11
0

Witam ! Mam problem, ponieważ dalej walczę z CLI/C++. Mianowicie mam klasę A, która zawiera listę obiektów klasy B, listę obiektów klasy C i listę obiektów klasy D.

Obiekty klasy B zawierają po jednym obiekcie klasy C i listę obiektów klasy D.

Tutaj wszystko gra, jednak potrzebuję teraz odwoływać się do tych obiektów i dodawać kolejne do list, edytować, etc. etc. Problem pojawia się, ponieważ muszę operować na obiekcie klasy A ( a zatem i na całej reszcie obiektów klas B,C,D również ), z paru form. To znaczy - główna forma odczytuje pola obiektów, oraz dodaje obiekty B, dodatkowo button ma otwierać nowe okno ( formę ) z formularzem dodania obiektu typu C do listy. Jest jeszcze potrzeba dodania kolejnych kilku form odpowiedzialnych za wywoływania danych metod klas i modyfikacji pól obiektów.

Chciałem przekazywać sam wskaźnik ustawiony na obiekt klasy A , do metody nowej formy, co by mi dodawało obiekt do org. listy, a nie do kopii obiektu. Pytanie pojawia się, w jaki sposób przekazać wskaźnik do obiektu klasy ref ? Szczerze powiem, że mimo, że pomału łapię, to troszkę gubię się w tych daszkach procentach i gwiazdkach ....

Dodam, że obiekt klasy A jest utworzony w obiekcie głównej formy, więc z głównej formy mam bezpośredni dostęp do obiektu klasy A, a zależy mi na dostępie z metod form wywoływanych przez formę główną.

Dziękuję za pomoc !

Pozostało 580 znaków

2011-07-11 11:00
0

Widzę, że chyba mętnie to przedstawiłem, lub nikt mnie nie lubi ;( Powiem w takim razie inaczej. Mam klasę A w której wywołuję w pewnej metodzie :

Zamówienia_2011::dodajdostawcę^ dodaj_dost = gcnew Zamówienia_2011::dodajdostawcę(this->listOfDeliver);
dodaj_dost->ShowDialog();

Obiekt dodaj_dost jest okienkiem dodawania dostawcy i z zamysłu miał modyfikować właśnie pola obiektu klasy A, jednak nie potrafię przekazać samego adresu pewnej listy z obiektu klasy A do konstruktora dodaj_dost.

I tu pytanie, mając powiedzmy :

ref class A{
 
   private:
 
      List<suppiler^>^ listOfDeliver;
 
....
 
  public:
 
      void dodaj(){
 
          Zamówienia_2011::dodajdostawcę^ dodaj_dost = gcnew Zamówienia_2011::dodajdostawcę(this->listOfDeliver);
          dodaj_dost->ShowDialog();
 
       }
};

Jak właśnie przekazać adres listOfDeliver do konstrukotra obiektu dodaj_dost.
Satysfakcjonowała by mnie również możliwość zwracania przez obiekt dodaj_dost jakiejś struktury po jej wyłączeniu, lub naciśnięciu jakiegoś przycisku.

Mogę liczyć na podpowiedz ;p ? THX.

Żeby nie było - nie męczę się z tym przez cały weekend - w weekend stworzyłem zasadę - bez programowania.

Pozostało 580 znaków

2011-07-11 16:50
Zamówienia_2011::Zamówienia_2011(List<suppiler^> ^a_lista)
{
  this->lista = a_lista;
}

przestań myśleć w kategorii "wskaźnik", czy "adres". uchwyt ^ jest odpowiednikiem wskaźnika *, więc gdy modyfikujesz obiekt przekazany przez uchwyt, to zmieni się oryginalny obiekt.

Pozostało 580 znaków

2011-07-11 22:59
0

Bangla. Może i Cię nie ozłocę , ale browar się Tobie należy ;p

Pozostało 580 znaków

2011-07-12 07:50
0

Piszesz w zarządzanym C++. Rozważ przerzucenie się na C#. Dla mnie ta odmiana c++ jest paskudna.

Pozostało 580 znaków

2011-07-12 08:13
msm
0

Piszesz w zarządzanym C++. Rozważ przerzucenie się na C#. Dla mnie ta odmiana c++ jest paskudna.

Przy czym jest to połączenie wszystkich cech C++ z największymi zaletami C#. Jeśli chodzi o możliwości to jest to najlepszy albo jeden z najlepszych języków platformy .NET

edytowany 1x, ostatnio: msm, 2011-07-12 08:13
Mnie jakoś odepchnęły te dodatki typu '^' i gcnew. Dla mnie zarządzane to C#, niezarządzane to C++. Tak jak pisałem osobiste odczucia. EOT - Sarrus 2011-07-12 09:11

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0