Protocol Buffer: Error Question

I have the following .proto file:

enum Enum1{
    X=0;
    Y=1;    
}
message SomeClass{
    required  Enum1 enum1=1;
    required Enum2 enum2=2;
}
enum Enum2{
    X=0;
    Z=1;    
}

When I try to compile it using protoc, I get the following error:

proto.proto: 19: 5: "X" already defined proto.proto: 19: 5: Note that enum values ​​use C ++ rules to determine the scope, which means that the enumeration values ​​are siblings of their type, and not children. Therefore, "X" must be unique, and not just inside "Enum2".

I could somehow overcome this problem!

+5
source share
2 answers

You can include correspondence in another message so that visibility does not conflict.

Example:

message Enum1{
 enum Enum{
     X=0;
     Y=1;    
 }
}

message Enum2{
 enum Enum{
     X=0;
     Y=1;    
 }
}

message SomeClass{
    required  Enum1.Enum enum1=1;
    required Enum2.Enum enum2=0;
}

-. , : :

enum Enum1{
    E1_X=0;
    E1_Y=1;    
}
enum Enum2{
    E2_X=0;
    E2_Z=1;    
}
message SomeClass{
    required  Enum1 enum1=1;
    required Enum2 enum2=2;
}
+4

message SomeClass{
required  Enum1 enum1=1;
required Enum2 enum2=2; }

, -

message SomeClass{
    required  Enum1 enum1.Y;
    required Enum2 enum2.Z;
}

edit: Java, ++, ?

edit2: http://www.mail-archive.com/protobuf@googlegroups.com/msg04986.html

enum1.X enum2.x , .

enum Enum1{
    W=0;
    Y=1;    
}
message SomeClass{
    required  Enum1 enum1=1;
    required Enum2 enum2=0;
}
enum Enum2{
    X=0;
    Z=1;    
}

- , , - .

0

All Articles