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

Clenske operatory – C / C++ – Fórum – Programujte.comClenske operatory – C / C++ – Fórum – Programujte.com

 

Alexej
~ Anonymní uživatel
4 příspěvky
28. 9. 2010   #1
-
0
-

zacal som sa trosku venovat C++ a robit si cvicenia z knihy Mistrvstvi C++, zaujimalo by ma preco je tento kod nespravne ?

------------------------------------------

#include <iostream>
using namespace std;
const int SIZE = 20;
int main()
{
struct car
{
char meno[SIZE];
int vyroba;
};

int n;
cout << "Kolik aut si prejete ulozit do katalogu? ";
(cin >> n).get();
car * pole = new car [n];

for (int i = 0; i < n; i++)
{
cout << "Auto c. " << i+1 << ":\n";
cout << "Prosim,zadajte znacku: ";
cin.getline(pole[i]->meno, SIZE - 1);
cout << "\nProsim, zadajte rok vyroby: ";
(cin >> pole[i]->vyroba).get();
}

cout << "\nTu je vasa zbierka: ";

for (int i = 0; i < n; i++)
cout << pole[i]->vyroba << " " << pole[i]->meno << endl;

return 0;
}
----------------------------------------------------

preco mi to nejde inicializovat s operatorom -> ale musim pouzit clensky operator bodku ? Vsak to pole typu car je dynamicky vytvorene tak preco nie -> ?

Nahlásit jako SPAM
IP: 91.127.235.–
KIIV
~ Moderátor
+43
God of flame
28. 9. 2010   #2
-
0
-

operator [] uz dela dereferenci.. tj. nemuzes pouzit dereferenci -> (uz bys delal druhou a to je v tomto pripade nesmysl)

muzes zkusit (pole+i)->prvek pokud je to tak nutne

Nahlásit jako SPAM
IP: 94.142.234.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Palmik0
Super člen
28. 9. 2010   #3
-
0
-

Ahoj. To co říká KIIV je samozřejmě pravda. Jen bych ještě dodal, že nezáleží na tom, jak je pole alokované. Podstatné je, co je v poli (nebo libovolném jiném kontejneru) uloženo.

Pole objektů tvé třídy / struktury -- obsahuje objekty samotné, nikoliv ukazatele na ně (což je i tvůj příklad a nejspíš tě pouze zmátl způsob dynamické alokace který obsahuje "car*" pročež sis asi myslel, že obsahuje ukazatele na car. Tak to ovšem není, pouze to odráží fakt jak pole interně fungují (resp. co pole v C++ jsou) :))

#include <iostream>

typedef unsigned int uint;

struct MojeTrida
{
public:
MojeTrida() : mojePolozka(0) {};
int mojePolozka;
};

int main()
{
const uint n = 5;
MojeTrida pole[n];

for (uint i = 0; i < n; i++) {
std::cout << pole[i].mojePolozka << '\n';
}
}


Pole ukazatelů na objekt (třeba podotknout, že MojeTrida* pole[5]; vytvoří pouze ukazatele na MojiTřídu které, zjednodušeně řečeno, nikam neukazují, musíš jim buďto přiřadit adresu existujícího objektu nebo objekt alokovat pomocí new)
#include <iostream>

typedef unsigned int uint;

struct MojeTrida
{
public:
MojeTrida() : mojePolozka(0) {};
int mojePolozka;
};

int main()
{
const uint n = 5;
MojeTrida* pole[n];

for (uint i = 0; i < n; i++) {
pole[i] = new MojeTrida;
}

for (uint i = 0; i < n; i++) {
std::cout << pole[i]->mojePolozka << '\n';
}
}



Nahlásit jako SPAM
IP: 147.251.208.–
Yesterday is history. Tomorrow is a mystery. Today is a gift and that is why it's called the present.
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, 123 hostů

Podobná vlákna

Násobné operátory v C — založil pirat7777

Bitové operátory — založil Dotem

Sablona - bin. operatory — založil Gadael

členské funkce cin — založil .

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ý