Ukazatel na clenskou funkci v tride – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Ukazatel na clenskou funkci v tride – C / C++ – Fórum – Programujte.comUkazatel na clenskou funkci v tride – C / C++ – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené.
Kenvelo+2
Super člen
26. 3. 2015   #1
-
0
-

Zdravím mohl bych poprosit o radu jak vytvořit ukazatel na členskou funkci ?  

//Item.H
class Item
{
...

public :
   void draw(sf::RenderWindow &window);
private:
   sf::Sprite Table1_Sprite;
   sf::Texture Table1_Texture;
....
};
//Item.cpp

void Item::draw(sf::RenderWindow &window)
{
	window.draw(Table1_Sprite);
}

//Main.cpp

int main()
{
  //........
  sf::RenderWindow window(sf::VideoMode(800, 600)
  //........
  switch (event.key.code)
  {
     case sf::Mouse::Middle:
     {
        void * ptr = new Item::draw(window); // Chyba
        break;
     }
  }
}

Příklad který je označen jako chyba sem našel na googlu.

Účel této funkce má být, že na určitém místě při kliku middle key přidá novou texturu. Funkce není dokončená při kliku na danou pozici. 

Předem díky za rady.

Nahlásit jako SPAM
IP: 89.177.196.–
Díky bohu, že počítače vymysleli muži. Kdyby to byly ženy, tak binární soustavu reprezentují jedničky, nuly a "možná"
26. 3. 2015   #2
-
0
-

U členské funkce s návratovým typem void nemůžeš očekávat, že vrátí ukazatel. Druhý problém je závažnější - volat metodu bez vytvoření instance třídy (co když instancí bude více? Jak poznat které instanci volání metody náleží?). Po vytvoření instance třídy máš nebo můžeš mít ukazatel na konkrétní instanci a pomocí tohoto ukazatele volat její metodu.

hu

Nahlásit jako SPAM
IP: 2001:67c:1222:800:bd2e:9d...–
26. 3. 2015   #3
-
0
-

   

Item *MyItem;
MyItem = new Item();  //dynamicky vytvorim instanci tridy a mam na ni ukazatel

MyItem->draw(parametr);  //pomoci ukazatele pracuji s metodami instance tridy

delete MyItem;  //nezapomenu uvolnit objekt z pameti

hu

Nahlásit jako SPAM
IP: 2001:67c:1222:800:bd2e:9d...–
Kenvelo+2
Super člen
26. 3. 2015   #4
-
0
-

#3 hlucheucho
To je ono děkuji ;)

Nahlásit jako SPAM
IP: 89.177.196.–
Díky bohu, že počítače vymysleli muži. Kdyby to byly ženy, tak binární soustavu reprezentují jedničky, nuly a "možná"
Kenvelo+2
Super člen
26. 3. 2015   #5
-
0
-

#3 hlucheucho
Udělal sem to sice tak jak si mi poradil textura se vykreslí na  zadané pozici ale když kliknu znovu textura zmizí a vytvoří se na jiné pozici. 

Nahlásit jako SPAM
IP: 89.177.196.–
Díky bohu, že počítače vymysleli muži. Kdyby to byly ženy, tak binární soustavu reprezentují jedničky, nuly a "možná"
26. 3. 2015   #6
-
0
-

Ono by to chtělo mít u všech tříd instanci a přistupovat k jejím metodám a atributům ... nebo sf je prostor jmen?

hu

Nahlásit jako SPAM
IP: 2001:67c:1222:800:bd2e:9d...–
Kenvelo+2
Super člen
26. 3. 2015   #7
-
0
-

#6 hlucheucho
sf je namespace

Nahlásit jako SPAM
IP: 89.177.196.–
Díky bohu, že počítače vymysleli muži. Kdyby to byly ženy, tak binární soustavu reprezentují jedničky, nuly a "možná"
26. 3. 2015   #8
-
0
-

To už bys musel odtajnit celý kód, z toho útržku tady se to nevyčte. Vypadá to, že ta metoda, nebo funkce volaná uvnitř ní, vymaže starou texturu a vykreslí ji na danou pozici.

hu

Nahlásit jako SPAM
IP: 2001:67c:1222:800:bd2e:9d...–
Kenvelo+2
Super člen
26. 3. 2015   #9
-
0
-

#8 hlucheucho
 

//Item.h
class Item
{
public:
	Item();
	~Item();

	void draw(sf::RenderWindow &window, float &x, float &y);

private:

	sf::Sprite Table1_Sprite;
	sf::Texture Table1_Texture;

};
//Item.cpp
Item::Item()
{
	if (!Table1_Texture.loadFromFile("Table1.png"))
	{
	}

	Table1_Sprite.setTexture(Table1_Texture);
}


Item::~Item()
{
}

void Item::draw(sf::RenderWindow &window, float &x, float &y)
{
	float sets = 10;
	Table1_Sprite.setPosition(x, y);
	Table1_Sprite.setOrigin(sets, sets);
	Table1_Sprite.scale(sf::Vector2f(0.1f, 0.1f));
	window.draw(Table1_Sprite);
	
}



// Main.cpp

Item *Polozka;

int main()
{
   float posx;
   float posy;

   sf::RenderWindow window(sf::VideoMode(800, 600), "!");
   while (window.isOpen())
   {
      sf::Event event;

      while (window.pollEvent(event))
      {
	switch (event.type)
	{
	   case sf::Event::Closed:
           window.close();
	   break;


   case sf::Mouse::Right:
   {
     posx = (float)event.mouseButton.x;
     posy = (float)event.mouseButton.y;
     break;
								
   }
  }
	window.clear();
	window.setView(view1);

	Polozka = new Item();
	Polozka->draw(window,posx,posy);
	delete Polozka;	
	window.display();
 }
}				
Nahlásit jako SPAM
IP: 89.177.196.–
Díky bohu, že počítače vymysleli muži. Kdyby to byly ženy, tak binární soustavu reprezentují jedničky, nuly a "možná"
Kenvelo+2
Super člen
27. 3. 2015   #10
-
0
-

Predpokladan ze musím vytvořit nějakou fukci která bude prebirat pozici textury a vykreslovat ji.nějak vůbec netuším jak na to

Zasláno z mobilního telefonu.

Nahlásit jako SPAM
IP: 89.177.196.–
Díky bohu, že počítače vymysleli muži. Kdyby to byly ženy, tak binární soustavu reprezentují jedničky, nuly a "možná"
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 11 hostů

Podobná vlákna

Ukazatel na funkci — založil Jirka

Ukazatel na funkci — založil Kenvelo

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý