Kezdőoldal » Számítástechnika » Programozás » Nem értem ezt a szintaktikát...

Nem értem ezt a szintaktikát eltudnátok magyarázni?

Figyelt kérdés

template<int size =20, class T2 = CIntArray<size , 0> > class TestA {


};


2012. dec. 11. 15:49
1 2
 1/11 A kérdező kommentje:

A típusparamétereknek is lehet alapértelmezett értéke, és ők is lehetnek származtatott típusúak, ezt mutatja a következő példa:


template<int size =20, class T2 = CIntArray<size , 0> > class TestA {


};


Elégséges, ha így példányosítunk:


TestA<> test2;


Konklúzióként pedig csak annyit tudok mondani, hogy használjuk a sablonokat. Igaz, picit nehézkes a gondolatmenetük több kódot kell írni, viszont nagyon rugalmasak, és sok tekintetben megkönnyítik munkánkat.

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

Ez a leírás erről de nem értem.

2012. dec. 11. 15:53
 2/11 A kérdező kommentje:

Ez azt jelenti,hogy a T2 típusa egyenlő lesz a CIntArray<size, 0> típussal?


CIntArray<size , 0> > itt mit jelent a balról jobbra levő harmadik kisebb nagyobb jel?

2012. dec. 11. 15:56
 3/11 A kérdező kommentje:

Már értem.

Most ez nem tiszta:

hogy ez miért nem fordul le.


//main.cpp


#include<iostream>


using std::cout;

using std::string;


typedef unsigned short ushort;


template<class T1 = int, class T2 = int> const T1 proba(const T1 = 1, const T2 = 1);


int main(){

cout << proba() ;



return 0;

}


template<class T1 = int, class T2 = int> const T1 proba(const T1 x, const T2 y)

{return x+y;}

2012. dec. 11. 16:14
 4/11 A kérdező kommentje:

Ezek a hibaüzenetek:

no matching function for call to 'proba()' Pedig létezik a proba metódus.


default template arguments may not be used in function templates without -std=c++11 or -std=gnu++11


//main.cpp


#include<iostream>


using std::cout;

using std::string;


typedef unsigned short ushort;


template<class T1 = int, class T2 = int> const T1 proba(const T1 = 1, const T2 = 1);


int main(){

cout << proba() ;



return 0;

}


template<class T1, class T2> const T1 proba(const T1 x, const T2 y)

{return x+y;}

2012. dec. 11. 16:17
 5/11 iostream ***** válasza:

Mi a hibaüzenet? Csak nem az, hogy "default template arguments may not be used in function templates without -std=c++0x or -std=gnu++0x"

vagy hasonló?

2012. dec. 11. 16:21
Hasznos számodra ez a válasz?
 6/11 iostream ***** válasza:
De látom, az. Akkor ESETLEG próbáld meg értelmezni, mit jelent ez. Segítek: csak az új szabvány engedélyezi a default template paramétert függvénysablonok esetén.
2012. dec. 11. 16:22
Hasznos számodra ez a válasz?
 7/11 A kérdező kommentje:
Honnan tudom letölteni a legújabb legfrissebb kiadott c++ fordítót ami tartalmazza a legújabb c++ szabványokat?
2012. dec. 11. 16:25
 8/11 A kérdező kommentje:
Windowsra.
2012. dec. 11. 16:25
 9/11 A kérdező kommentje:

Áruljátok még azt el hogy ez micsoda:


Amikor nem azt írom,hogy template<class T>

hanem template<T>


Mi a különbség közöttük?

2012. dec. 11. 16:45
 10/11 iostream ***** válasza:

Megvan, hiszen figyelmeztet, hogy melyik kapcsolót használd ahhoz, hogy leforduljon.


Az a szintaxis meg... az első egy template deklarálásánál használatos, a második meg a template példányosításánál, feltéve, hogy van egy T nevű típusod.

2012. dec. 11. 16:47
Hasznos számodra ez a válasz?
1 2

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!