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

Pole v argumentu funkce – C / C++ – Fórum – Programujte.comPole v argumentu funkce – C / C++ – Fórum – Programujte.com

 

oxidián0
Grafoman
8. 6. 2016   #1
-
0
-

Jsem si jistý že jsem se už na to asi tak před rokem a půl ptal, ale jak to dohledat nevím, takže se zeptám znova:

Když chci předat argumenty z hlavní funkce do konstruktoru myDFT

int main(int argc, char ** argv)
{
	help(argv[0]);
	const char* filename = argc >=2 ? argv[1] : "../../data/lena.jpg";	
	const char* subimage = argc >=2 ? argv[1] : "../../data/subimage.jpg";	

	MyDFT myDFT(argv);
}

jak to mám udělat aby se člověk neztratil ve hvězdičkách?

class MyDFT {
    private:
        int file_no;
        int editImage;
        char ** args;

...
}
MyDFT::MyDFT(char ** argv) : file_no(-1),editImage(1) {
	args = &argv;
}


Tady mi to hodí chybu

error C2440: '=' : cannot convert from 'char ***' to 'char **'

ale nebudu tam přece deklarovat 3 hvězdičky? To se nějak řeší přes & ne?

Nahlásit jako SPAM
IP: 78.45.87.–
vitamin+8
Grafoman
8. 6. 2016   #2
-
+1
-
Zajímavé

#1 oxidián
 

MyDFT::MyDFT(char ** argv) : file_no(-1),editImage(1) {
	this.args = argv;   ///this. je volitelne
}
///alebo:
MyDFT::MyDFT(char ** argv) : file_no(-1),editImage(1), args{argv} {
}

operator '&' vracia adresu premennej, cize prida jednu hvizdicku navyse. V tomto pripade nepotrebujes pouzit '&'

edit:

Konstruktory je mozne zjednodusit takto:

class MyDFT {
    private:
        int file_no = -1;
        int editImage = 1;
        char ** args = nullptr;

...
}

MyDFT::MyDFT(char ** argv): args{argv} { }
Nahlásit jako SPAM
IP: 78.141.123.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
oxidián0
Grafoman
8. 6. 2016   #3
-
0
-

To mi však dává chybu

error C2228: left of '.args' must have class/struct/union

Nahlásit jako SPAM
IP: 78.45.87.–
vitamin+8
Grafoman
8. 6. 2016   #4
-
0
-
Nahlásit jako SPAM
IP: 78.141.123.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
KIIV
~ Moderátor
+43
God of flame
8. 6. 2016   #5
-
+1
-
Zajímavé

   

// this je pointer, takze musi pouzit  ->  ne jen  .
this->args = argv;


Ale chce to taky pocet argumentu

Nahlásit jako SPAM
IP: 94.113.93.–
Program vždy dělá to co naprogramujete, ne to co chcete...
vitamin+8
Grafoman
8. 6. 2016   #6
-
0
-

#5 KIIV
Zvykol som si na jazyk D, tam je to referencia a nie pointer :)

Nahlásit jako SPAM
IP: 78.141.123.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
oxidián0
Grafoman
8. 6. 2016   #7
-
0
-

Dík. To je neskutečné co vše se dá zapoměnout za rok a půl.

vitamin: já to zas znám z PHP, jenže ty hlášky ve Visual Studio 2010 jsou úplně mimo.

Nahlásit jako SPAM
IP: 78.45.87.–
oxidián0
Grafoman
8. 6. 2016   #8
-
0
-

Zkoušel jsem:

MyDFT::MyDFT(char ** argv) : file_no(-1),editImage(1), args{argv}

ale psalo to chybu že to { tam nemá být
 

Nahlásit jako SPAM
IP: 78.45.87.–
KIIV
~ Moderátor
+43
God of flame
8. 6. 2016   #9
-
0
-

To je ze standardu c++11 (2011) - visual studio 2010 to urcite mit nebude. Nejaka novejsi verze uz by to zvladnout mela. Jinak pouzij misto {} normalni zavorky ()

Nahlásit jako SPAM
IP: 94.113.93.–
Program vždy dělá to co naprogramujete, ne to co chcete...
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ů

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ý