__property set_ naming issue (managed C++)

J

Julie

What would you expect from the following:

enum Type { a, b, c };

public __gc class MClass
{
public:
MClass(Type t);
__property void set_Type(Type t);
// etc.
};

When compiling, I get very strange errors (in this case, for the constructor)
where the Type type is compiled as the managed Type property. It is an easy
fix, although the compiler diagnostic is far from intuitive.

Comments?
 
T

Tomas Restrepo \(MVP\)

Hi Julie,
What would you expect from the following:

enum Type { a, b, c };

public __gc class MClass
{
public:
MClass(Type t);
__property void set_Type(Type t);
// etc.
};

When compiling, I get very strange errors (in this case, for the constructor)
where the Type type is compiled as the managed Type property. It is an easy
fix, although the compiler diagnostic is far from intuitive.

Comments?

What errors are you getting? Compiling your sample code, I get:
t.cpp
t.cpp(9) : error C2872: 'Type' : ambiguous symbol
could be 't.cpp(4) : Type'
or 't.cpp(1) : System::Type'
t.cpp(10) : error C2872: 'Type' : ambiguous symbol
could be 't.cpp(4) : Type'
or 't.cpp(1) : System::Type'

which actually seems like a very good diagnostic message.
 
J

Julie

Tomas Restrepo (MVP) said:
Hi Julie,


What errors are you getting? Compiling your sample code, I get:
t.cpp
t.cpp(9) : error C2872: 'Type' : ambiguous symbol
could be 't.cpp(4) : Type'
or 't.cpp(1) : System::Type'
t.cpp(10) : error C2872: 'Type' : ambiguous symbol
could be 't.cpp(4) : Type'
or 't.cpp(1) : System::Type'

which actually seems like a very good diagnostic message.


My mistake --

Type should be MyType in all instances.
 
T

Tomas Restrepo \(MVP\)

Hi Julie,

My mistake --

Type should be MyType in all instances.

Meaning this, then?

#using <mscorlib.dll>
using namespace System;

enum MyType { a, b, c };

public __gc class MClass
{
public:
MClass(MyType t);
__property void set_Type(MyType t);
// etc.
};

Compiles fine for me :|
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top