Dynamická Struktura – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Dynamická Struktura – C / C++ – Fórum – Programujte.comDynamická Struktura – C / C++ – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Petr
~ Anonymní uživatel
696 příspěvků
14. 5. 2013   #1
-
0
-

Dobrý den :) 

Už si nevím rady, tak se obracím na vás. 
Mám strukturu a udělám z ní ve funkci 1 dynamickou. Můj problém je v tom, že nevím jak data z dynamické struktury neumím volat ve funkci 2.

Příklad:
 

struct VERTEX{
	float x;
	float y;
	float z;
};

int o = 1;

bool Funkce1()
{
     VERTEX *vertex = new VERTEX[o];
     vertex[1].x=5.0;
     return true;
}
bool funkce2()
{
// toto je můj problém :/     cout<<vertex[1].x; 
     delete [] vertex;
}

Jsem více méně začátečník, tak mě kdyžtak omluvte, za nepřehledný kód nebo případné chyby.

Nahlásit jako SPAM
IP: 90.182.102.–
Reklama
Reklama
Petr
~ Anonymní uživatel
696 příspěvků
14. 5. 2013   #2
-
0
-

Přehlédl jsem, že mi chybí návratová hodnota u funkce 2, tak mě omluvte :)

Nahlásit jako SPAM
IP: 90.182.102.–
KIIV+42
God of flame
14. 5. 2013   #3
-
0
-

no bud budes muset ten vertex predavat obema (jako ukazatel na ukazatel - tj. funkce1(VERTEX ** vertex) a volat   funkce1(&vertexptr) ... a pak do druhy to samy...

nebo to provest jako globalni promennou (ale to moc nedoporucuju - jsou pak funkce vazany na jedinou promennou)

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Petr
~ Anonymní uživatel
696 příspěvků
14. 5. 2013   #4
-
0
-

Děkuju moc :) nečekal jsem tak rychlou odpověd.

Nahlásit jako SPAM
IP: 90.182.102.–
ingiraxo+15
Grafoman
14. 5. 2013   #5
-
0
-

   

// struktura vertexu (pro ukazku jeden parametr)
struct Vertex
{
    float x;
};

// vytvori instanci vertexu
Vertex* createVertex()
{
    Vertex* vertex = new Vertex();
    vertex->x = 0;
    return vertex;
}

// vytvori pole vertexu o poctu "count"
Vertex** createVerticlesArray(const int count)
{
    Vertex** verticles = new Vertex*[count];

    for (int i = 0; i < count; ++i)
    {
        *(verticles + i) = createVertex();
    }
    return verticles;
}

// vypise pole vertexu "verticles" o poctu "count"
void printVerticles(Vertex** verticles, const int count)
{
    for (int i = 0; i < count; ++i)
    {
        cout << (*(verticles + i))->x << endl;
    }
}

int main()
{
    const int verticlesCount = 5; // pocet vertexu v poli

    // pole vertexu
    Vertex** verticles = createVerticlesArray(verticlesCount);

    // nastavi 3. vertex na hodnotu x=10
    (*(verticles + 2))->x = 10.0f;

    // vypise pole vertexu
    printVerticles(verticles, verticlesCount);

    return EXIT_SUCCESS;
}
Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
Petr
~ Anonymní uživatel
696 příspěvků
14. 5. 2013   #6
-
0
-

Díky za pomoc :) Dělám loader na obj modely a vyhořel jsem u funkce na vykreslení modelu, kde právě potřebuji vytáhnout data ze struktur. Tak snad mi ten váš kód pomůže. Ještě jednou vám děkuju :)

Nahlásit jako SPAM
IP: 90.182.102.–
vitamin+8
Grafoman
14. 5. 2013   #7
-
0
-

#6 Petr
Nebolo by lepsie to spravyt ako triedu/strukturu s konstruktorom a destruktorom, pripadne rovno pouzit std::vector?

Nahlásit jako SPAM
IP: 95.105.157.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
Petr
~ Anonymní uživatel
696 příspěvků
14. 5. 2013   #8
-
0
-

Jsem vážně více méně začátečník, takže nemám tolik vědomostí, abych tomu dokonale rozuměl :) popravdě pojem konstruktor a destruktor pořádně zatím nechápu. Stále se učím, takže vám můžu připadat jako hlupák. Ale alespoň vím, co bych měl ještě nastudovat :)

Nahlásit jako SPAM
IP: 90.182.102.–
vitamin+8
Grafoman
14. 5. 2013   #9
-
0
-

#8 Petr
Tebe by stacilo toto:


struct VERTEX{
	float x;
	float y;
	float z;
};

#include <vector>

int main(){
	std::vector<VERTEX> data(7);

	data[0].x = 7;
	data[0].y = 8;

	data[1].x = 9;
	data[1].z = 10;
//....

}
Nahlásit jako SPAM
IP: 95.105.157.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
Petr
~ Anonymní uživatel
696 příspěvků
14. 5. 2013   #10
-
0
-

Tak děkuju :) 

Nahlásit jako SPAM
IP: 90.182.102.–
hlucheucho+10
Posthunter
15. 5. 2013   #11
-
0
-

Konstruktor vytvoří objekt podle daných pravidel, destruktor ho podle daných pravidel z paměti odstraní.

hu

Nahlásit jako SPAM
IP: 195.178.67.–
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, 108 hostů

Podobná vlákna

Dynamická alokace — založil Bananovnik

Dynamická tabulka — založil pepaprogramator

Dynamicka textarea — založil tribalcz

Moderátoři diskuze

 

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