Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/145.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 是否可以在google protobuf中为类型(枚举或消息)定义别名?_C++_Enums_Protocol Buffers - Fatal编程技术网

C++ 是否可以在google protobuf中为类型(枚举或消息)定义别名?

C++ 是否可以在google protobuf中为类型(枚举或消息)定义别名?,c++,enums,protocol-buffers,C++,Enums,Protocol Buffers,我的proto文件中有两个枚举,它们定义了几乎相同的值 是否可以删除其中一个并留下一个别名以保持所有代码正常工作 例如: enum A { a = 0; b = 1; } enum B { a = 0; b = 1; } 我想在c++中使用类似typedef的东西: enum A { a = 0; b = 1; } typedef A B; 我在文档中没有找到这个。有什么解决办法吗?从protobuf版本3开始,这是不可能的。这是一个老问题,但如果有些人

我的proto文件中有两个枚举,它们定义了几乎相同的值

是否可以删除其中一个并留下一个别名以保持所有代码正常工作

例如:

enum A {
   a = 0;
   b = 1;
}
enum B {
   a = 0;
   b = 1;
}
我想在c++中使用类似typedef的东西:

enum A {
   a = 0;
   b = 1;
}

typedef A B;

我在文档中没有找到这个。有什么解决办法吗?

从protobuf版本3开始,这是不可能的。

这是一个老问题,但如果有些人仍然感兴趣, 现在可以使用protobuf在枚举上创建别名

enum EnumAllowingAlias {
  option allow_alias = true;
  UNKNOWN = 0;
  STARTED = 1;
  RUNNING = 1;
}
enum EnumNotAllowingAlias {
  UNKNOWN = 0;
  STARTED = 1;
  // RUNNING = 1;  // Uncommenting this line will cause a compile error inside Google and a warning message outside.
}

如官方文件所述。您只需通过添加
选项allow\u alias=true来启用别名选项

typedef枚举A{…}B
更简洁,并且
使用B=enum A{…}也应该可以。我发誓,我需要找到第一个想到“smth”是“某物”的可接受替代词的人。我希望看到语言不可知的解决方案。在谷歌上搜索C#项目的“protobuf类型别名”,只找到了这个页面。根据proto3文档,这似乎不再正确。