απορία C++ ( για γερούς =?utf-8?b?IM67z43PhM61z4I=?=)

Θοδωρής Λύτρας thlytras at gmail.com
Sat Jan 14 22:02:07 EET 2012


...ή τουλάχιστον σ'εμένα τον ερασιτέχνη έτσι φαίνεται, καθώς δε μπορώ να βρώ 
μια απάντηση στο πρόβλημα. Μπαίνω κατευθείαν στο ψητό:

typedef std::vector<A::myEnum> Foo;

class A
{
public:
    enum myEnum {Red, Green, Blue, White, Black};
    A();
    void myFunction(Foo arg);
};

Ο τύπος myEnum θέλω να είναι δηλωμένος μέσα στην κλάση A (όχι global, όχι σε 
namespace), ενώ ο typedef Foo προτιμώ να είναι global (στη χειρότερη μέσα στην 
κλάση A). Το πρόβλημα είναι οτι μέσα στην κλάση A έχω τη συνάρτηση 
myFunction() που δέχεται ως όρισμα ένα αντικείμενο Foo.

Έτσι αν ο typedef Foo οριστεί πριν από την κλάση A ο compiler παραπονείται οτι 
δεν έχει οριστεί ο myEnum. Αν πάλι ο Foo οριστεί μετά την A, ο compiler 
παραπονείται οτι δεν έχει οριστεί ο τύπος Foo του ορίσματος της myFunction().

Υπάρχει κάποιος τρόπος να λυθεί το πρόβλημα (με κάποιου είδους forward 
declaration ίσως??)? Το μόνο που μπορώ να σκεφτώ είναι να μπει το typedef μετά 
και να μη χρησιμοποιηθεί καθόλου μέσα στην κλάση (δηλαδή να γίνει void 
myFunction(std::vector<A::myEnum> arg) ) αλλά αυτό είναι άσχημο.

Ή μήπως εγώ είμαι τελείως κακομαθημένος???

Any help appreciated,

Θοδωρής




More information about the Linux-greek-users mailing list