我正在尝试将项目移植到具有较新 g++ 版本的新 Linux 系统中。编译时我得到以下信息:
error: extra qualification 'Customer::' on member 'getCustomer'
在类定义中,我在 getCustomer() 前加上 Customer::前缀。
如果我删除 Customer:: 我的代码可以工作,但是代码有很多以类名和范围运算符为前缀的条目。有没有一种方法(例如编译器指令)可以帮助消除此错误?
来 self 的 shell gcc 版本 4.4.2 20091027 (Red Hat 4.4.2-7) (GCC)
最佳答案
Inside a class definition, I am prefixing getCustomer() with Customer::.
我假设你的意思是:
class Customer {
Customer *Customer::getCustomer() { ... }
};
不要。没有必要,因为你已经在类定义中了,而且我认为 C++ 标准甚至不允许这样做(我很惊讶旧的 G++ 这样做了?)。
似乎没有 -std
标志(在 GCC 4.4.5 中)允许这样做。
关于c++ - 忽略 g++ 编译错误以获得向后兼容性的额外资格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9603813/