Help and Support
 

powered byLive Search

FIX: Typedef Type Causes C2275: Illegal Use of Type

Retired KB ArticleThis article was written about products for which Microsoft no longer offers support. Therefore, this article is offered "as is" and will no longer be updated.
Article ID:166513
Last Review:July 5, 2005
Revision:1.1
This article was previously published under Q166513

SYMPTOMS

Using a typedef cast in the member initialization of a class may cause the following errors:

error C2275: 'test::run' : illegal use of this type as an expression
error C2146: syntax error : missing ')' before identifier 'arg'
error C2612: trailing '.*|->*' illegal in base/member initializer list
error C2059: syntax error : ')'
error C2143: syntax error : missing ';' before '{'
fatal error C1004: unexpected end of file found

Back to the top

RESOLUTION

Use the actual type rather then the typedef. For example, in the following sample use test::run rather than test_run. Or, use the functional notation test_run (arg) for type conversion instead of the cast notation. Another option is to initialize the member in the body of function.

Back to the top

STATUS

Microsoft has confirmed that this is a problem in the Microsoft products that are listed at the beginning of this article. This problem was corrected in Microsoft Visual C++ version 6.0.

Back to the top

MORE INFORMATION

/* Compiler Options Needed : none */ 

    class test {
    public:
        enum run{ one, two, three };
    };

    typedef test::run test_run;

    class test2 {
        test2(int);
        ~test2();
    public:
        test_run testvalue;
    };

    test2::test2(int arg):testvalue( (test_run) arg) {}     //Causes error

    // test2::test2(int arg):testvalue( (test::run) arg) {} //WORKAROUND 1
    // test2::test2(int arg):testvalue( test_run (arg)) {}  //WORKAROUND 2
				

Back to the top


APPLIES TO
Microsoft Visual C++ 4.2 Enterprise Edition
Microsoft Visual C++ 4.2 Professional Edition
Microsoft Visual C++ 5.0 Enterprise Edition
Microsoft Visual C++ 5.0 Professional Edition

Back to the top

Keywords: 
kbbug kbfix kbvc600fix KB166513

Back to the top

Article Translations

 

Other Support Options

  • Need More Help?
    Contact a Support professional by E-mail, Online or Phone.
  • Customer Service
    For non-technical assistance with product purchases, subscriptions, online services, events, training courses, corporate sales, piracy issues, and more.
  • Newsgroups
    Pose a question to other users. Discussion groups and Forums about specific Microsoft products, technologies, and services.