• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Wskaźnik na wartość zwracaną w metodzie size klasy Vector

Object Storage Arubacloud
0 głosów
246 wizyt
pytanie zadane 17 kwietnia 2017 w C i C++ przez DarkEliat Bywalec (2,810 p.)
zamknięte 24 sierpnia 2018 przez DarkEliat

Witam.

Nurtuje mnie jak stworzyć wskaźnik, który będzie wskazywał na wartość, która jest zwracana w metodzie size w Vectorze.

Próbowałem tak:

size_t var = *vector.size();

I to się kompiluje, ale zaraz po uruchomieniu programu Visual Studio wyrzuca wyjątek, mówiący, że ten wskaźnik wskazuje na wartość 0x00000000

Gdy napiszę tak:

size_t var = &vector.size();

Wyskakują błędy:

- expression must be an lvalue or a function designator

- C2102    '&' requires l-value

Próbowałem także użyć:

typedef size_t( *FunctionSize)();
FunctionSize var = vector.size();

Lecz to również nie działa.

Co robić?

komentarz zamknięcia: Dokładnie to o co proszę w pytaniu nie jest dostępne w C++, jednak dla ciekawskich mam interesujący kawałek kodu. Umożliwia on korzystanie z metody vector::size pod inną nazwą. Jest to całkowicie problematyczne i bezużyteczne, jednak może komuś się przyda jeśli powiem, że jest to wskaźnik na metodę innej klasy, co może być dobrym sposobem na skrócenie nazwy metody jakiejś klasy. Oto kod: https://drive.google.com/file/d/1A_4--tgRKcM4yCayM1NhmNhafzMyLXQd/view?usp=sharing

2 odpowiedzi

+1 głos
odpowiedź 17 kwietnia 2017 przez Knayder Nałogowiec (37,640 p.)
wybrane 17 kwietnia 2017 przez DarkEliat
 
Najlepsza
#include <iostream>
#include <vector>

int main()
{
	std::vector<int> vector;

	std::size_t *vectorSize = new size_t;
	*vectorSize = vector.size();

	std::cout << *vectorSize << std::endl;

	cin.get();

	delete vectorSize;
	return 0;
}

np. tak?

komentarz 17 kwietnia 2017 przez DarkEliat Bywalec (2,810 p.)
Twój kod kompiluje się, wyjątki nie wyskakują, ale cout wyświetla wielkość vectora w momencie stworzenia wskaźnika, jest możliwość, by po zmianie wielkości i ponownym wyświetleniu wskaźnika on pokazywał wartość zaktualizowaną?

Pozdrawiam.
komentarz 17 kwietnia 2017 przez Knayder Nałogowiec (37,640 p.)
Nie da się.
+1 głos
odpowiedź 17 kwietnia 2017 przez niezalogowany
Tylko, że z tego co mi się wydaje to .size() zwraca za każdym razem nową zmienną (alokowany jest nowy obszar pamięci dla zwracanego rozmiaru), co oznacza tyle że ptr na .size() nie ma sensu
komentarz 17 kwietnia 2017 przez DarkEliat Bywalec (2,810 p.)
OK, dzięki, a jest możliwość by stworzyć coś w tym stylu, co będzie wskazywało na zawsze aktualną wielkość?
komentarz 17 kwietnia 2017 przez niezalogowany
Właśnie mówię, że się nie da. Musisz odwołać się do niej przez size()
komentarz 17 kwietnia 2017 przez DarkEliat Bywalec (2,810 p.)
W takim razie dzięki ;)

Pozdrawiam.

Podobne pytania

0 głosów
1 odpowiedź 963 wizyt
pytanie zadane 15 lipca 2017 w C i C++ przez Ziom Początkujący (430 p.)
0 głosów
4 odpowiedzi 1,207 wizyt
pytanie zadane 21 lutego 2017 w C i C++ przez Danthee Początkujący (260 p.)
0 głosów
1 odpowiedź 460 wizyt
pytanie zadane 12 grudnia 2015 w C i C++ przez patryk16 Obywatel (1,080 p.)

92,760 zapytań

141,684 odpowiedzi

320,470 komentarzy

62,104 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...