Enum Issue
-
Hi Experts I am migrating one project from Vc 6.0 to Vc 8.0. I found one compilation Error regarding Enum. In Vc 6.0 they have declared an enum in a class and again the same enum they are using in other class with scope resolution and have changed the enum value. It is compiling fine on Vc 6.0 but throwing an error while compiling in Vc 8.0. Example code. class CTest { public: enum TestEnum {NA=0, First}; }; class CTest1 { public: enum CTest::TestEnum {Second, Third}; }; It is working fine in Vc 6.0 but throwing error in Vc 8.0 Error is:- error C2911: 'CTest::TestEnum' : cannot be declared or defined in the current scope
-
Hi Experts I am migrating one project from Vc 6.0 to Vc 8.0. I found one compilation Error regarding Enum. In Vc 6.0 they have declared an enum in a class and again the same enum they are using in other class with scope resolution and have changed the enum value. It is compiling fine on Vc 6.0 but throwing an error while compiling in Vc 8.0. Example code. class CTest { public: enum TestEnum {NA=0, First}; }; class CTest1 { public: enum CTest::TestEnum {Second, Third}; }; It is working fine in Vc 6.0 but throwing error in Vc 8.0 Error is:- error C2911: 'CTest::TestEnum' : cannot be declared or defined in the current scope
Listen to the compiler - the VC++ handling of enums changed significantly in either 2002 or 2003 - the code that compiled under VC++6 is just plain wrong, you can't open up enums and extend them the way you can namespaces. All Microsoft compilers have a breaking changes document, have a look in that to see what else has changed and going to trip you up. Ash
-
Listen to the compiler - the VC++ handling of enums changed significantly in either 2002 or 2003 - the code that compiled under VC++6 is just plain wrong, you can't open up enums and extend them the way you can namespaces. All Microsoft compilers have a breaking changes document, have a look in that to see what else has changed and going to trip you up. Ash