απορία C++ ( για γερούς =?iso-8859-7?b?IOv99OXy?=)

Θοδωρής Λύτρας thlytras at gmail.com
Mon Jan 16 00:41:54 EET 2012


Στις Κυρ 15 Ιαν 2012, γράψατε:
> Στις 15 Ιανουαρίου 2012 8:14 π.μ., ο χρήστης Θοδωρής Λύτρας
> <thlytras at gmail.com> έγραψε:
> > Αυτό τελικά θα κάνω. Τώρα όμως βγαίνει κι άλλο ένα πρόβλημα. Στην δήλωση
> > της myfunction() θέλω να περάσω και ένα κενό std::vector σαν default
> > όρισμα. Δε με αφήνει όμως και μου λέει "missing template argument after
> > '('".
> > 
> > Πως θα πρέπει να δηλώσω ένα κενό std::vector του τύπου myEnum??? Το Foo()
> > δε φαίνεται να δουλεύει, ούτε πολύ περισσότερο το std::vector().
> 
> Σε εμένα το παρακάτω περνάει από τον μεταγλωττιστή ανενόχλητο:
> 
> class A
> {
> public:
>    enum myEnum {Red, Green, Blue, White, Black};
>    typedef std::vector<A::myEnum> Foo;
>    A();
>    void myFunction(const Foo& arg=Foo());
> };
> 
> Αυτό συμβαίνει ακόμα και αν η παράμετρος arg είναι απλώς Foo όπως την
> είχες. Παρεμπιπτόντως, μάλλον θα θέλεις να χρησιμοποιήσεις σταθερή
> αναφορά για να γλυτώσεις την αντιγραφή του vector...

Έχεις απόλυτο δίκιο και σ'ευχαριστώ! Ο λόγος που δε μου πέρναγε ήταν επειδή 
ακριβώς χρησιμοποιούσα ήδη αναφορά, αλλά όχι σταθερή! Μόλις πρόσθεσα το const 
δούλεψε.

Και πάλι ευχαριστώ,
Θοδωρής


-- 
"Beauty is transitory"
"Beauty survives"
        - Mr. Spock & Capt. Kirk, "That which survives", stardate unknown
by Theodore Lytras <thlytras at gmail.com>



More information about the Linux-greek-users mailing list