απορία 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