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

question-closed Uzycie obiektu przed inicjalizacja

Object Storage Arubacloud
0 głosów
136 wizyt
pytanie zadane 5 września 2017 w C i C++ przez 10kw10 Pasjonat (22,880 p.)
zamknięte 5 września 2017 przez 10kw10

Otoz chcialbym miec klase, ktora ma vector wszystkich obiektow innej klasy i zeby dodawanie odbywalo sie od razu w konstruktorze bez zbednych wywolan innch metod.

#include <iostream>
#include <vector>
class Foo;
class vector
{
public:
	std::vector<Foo*>objects;

	static vector* Instance()
	{
		static vector *foo;
		return foo;
	}

	static void addToVector(Foo *ptr)
	{
		vector::Instance()->objects.push_back(ptr);
	}

	static std::vector<Foo*> getVector()
	{
		return vector::Instance()->objects;
	}
};
class Foo
{
public:
	int a, b;

	Foo(Foo *objectPtr) : a(10), b(20)
	{
		vector::addToVector(objectPtr);
	}
};
int main()
{
	Foo *foo = new Foo(foo);

	std::cout<<vector::getVector()[0]->a;

	return 0;
}

Kod sie kompiluje ale nie widac nic na ekranie, tak jakby a bylo rowne null.

Tak przy okazji, czy tylko ja mam problemy ze utworzeniem zmiennej statycznej ? Od razu wywala errora "nierozpoznany symbol zewnetrzny", a w CB dziala ;/

komentarz zamknięcia: .

1 odpowiedź

+1 głos
odpowiedź 5 września 2017 przez januszprogramowania Bywalec (2,840 p.)
wybrane 5 września 2017 przez 10kw10
 
Najlepsza

Masz tutaj kilka błędów:

Foo *foo = new Foo(foo);  - wstawiasz niezainicjowany wskaźnik do konstruktora;

w konstruktorze zamiast objectPtr użyj po prostu this

No i jeszcze 

static vector* Instance()
    {
        static vector *foo;
        return foo;
    }

Nie tworzysz tam obiektu tylko niezainicjowany wskaźnik tak będzie lepiej

static vector* Instance()
    {
        static vector foo;
        return &foo;
    }
komentarz 5 września 2017 przez 10kw10 Pasjonat (22,880 p.)
Tak to jest jak sie na szybkiego pisze. No tak... eh ;/ Dzieki

Podobne pytania

0 głosów
1 odpowiedź 521 wizyt
+1 głos
1 odpowiedź 1,961 wizyt
pytanie zadane 25 czerwca 2017 w C i C++ przez pimpek Użytkownik (680 p.)
0 głosów
1 odpowiedź 148 wizyt
pytanie zadane 27 czerwca 2018 w C i C++ przez 99xkubax99 Obywatel (1,780 p.)

92,573 zapytań

141,423 odpowiedzi

319,645 komentarzy

61,959 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

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!

...