gcc中不同namespace中同名class冲突时
2013-08-29 09:56
183 查看
正常情况下,编译器都会报错,提示你有两个候选类,让你明确的选择一个。
比如我的情况,我自己设计了一个类Message, 然后在某个文件里面引用了它。但是我的文件中又引入了mongodb的头文件,非常不小心的用
using namespace mongo;
打开了名字空间。结果两个类Message之间冲突。
当编写代码
Message* p = NULL;
得到GCC4.8.1的友好的编译错误:
error: reference to ‘Message’ is ambiguous
但是如果写成这样,GCC4.8.1就惨了,搞不清状况,报出一个非常费解的错误。
boost::shared_ptr<Message> p(new InitRequest());
这说明了GCC4.8.1在处理模板类的时候报错有多么的失真。如果继续用GCC,以后要小心这个问题。
还是找机会试一下clang吧。
这是我在stackoverflow上的相关问题,折腾到很晚。
http://stackoverflow.com/questions/18493070/gcc-compiler-does-not-recognize-my-class-when-using-shared-ptr
比如我的情况,我自己设计了一个类Message, 然后在某个文件里面引用了它。但是我的文件中又引入了mongodb的头文件,非常不小心的用
using namespace mongo;
打开了名字空间。结果两个类Message之间冲突。
当编写代码
Message* p = NULL;
得到GCC4.8.1的友好的编译错误:
error: reference to ‘Message’ is ambiguous
但是如果写成这样,GCC4.8.1就惨了,搞不清状况,报出一个非常费解的错误。
boost::shared_ptr<Message> p(new InitRequest());
error: template argument 1 is invalid shared_ptr<Message> init_request(new InitRequest()); ^ ../codes/main/src/business/sign.cc:49:35: error: invalid type in declaration before ‘(’ token shared_ptr<Message> init_request(new InitRequest()); ^ ../codes/main/src/business/sign.cc:49:53: error: invalid conversion from ‘InitRequest*’ to ‘int’ [-fpermissive] shared_ptr<Message> init_request(new InitRequest());
这说明了GCC4.8.1在处理模板类的时候报错有多么的失真。如果继续用GCC,以后要小心这个问题。
还是找机会试一下clang吧。
这是我在stackoverflow上的相关问题,折腾到很晚。
http://stackoverflow.com/questions/18493070/gcc-compiler-does-not-recognize-my-class-when-using-shared-ptr
相关文章推荐
- gcc中不同namespace中同名class冲突时
- GCC的符号可见性——解决多个库同名符号冲突问题
- 类加载器[4]由不同ClassLoader对象加载的同名类属于不同类
- 不同jar包相同同名类--Classloader.getResource--slf4j原理
- Elasticsearch 同一索引不同类型下同名字段的映射冲突实例
- GCC的符号可见性——解决多个库同名符号冲突问题
- C++ friend class与namespace冲突引起的思考
- GCC的符号可见性——解决多个库同名符号冲突问题
- C++/CLI中class成员声明与实现分开在不同文件时必须添加namespace
- Static Nested Class 和 Inner Class的不同
- arm-linux-gcc不同版本交叉编译器的切换使用
- spring-mvc jsp表单提交 不同POJO的相同属性[同名参数]
- gcc链接静态库时对待.a文件和.o文件的不同
- 深入浅析Java中Static Class及静态内部类和非静态内部类的不同
- 关于C++中的模板和using namespace std 的冲突
- 使用反射+缓存+委托,实现一个不同对象之间同名同类型属性值的快速拷贝
- Activity与class获取类名的方式不同
- WPF与输入法冲突研究之三:韩文输入法在不同平台,WinForm/WPF下的区别
- Android手动打包:jar某目录下存在两个同名(不区分大小写)class文件,解压后如何再打包回dex
- 安装devtoolset来满足gcc不同版本的要求