c++ - 使用旧的 C 库调用临时对象的方法会导致编译器错误

标签 c++ linux methods temporary-objects

从装有 glibc-2.5-25 (suse 10.2) 的计算机移植到装有 glibc-2.3.2-6 (suse 8.2) 的计算机时,我的代码遇到了一个奇怪的问题。我对临时对象使用了多个方法调用,但它们在旧机器上不起作用。

class A
{
public:
    A(int n) {}
    void method() {}
};

int main()
{
    A(10).method(); //here the compiler gives parse error before . 

    A a(10);
    a.method(); //this works fine 
}

这真的会因为较旧的 libc 版本而发生吗?或者可能是我的 IDE 中的设置(编译器设置)?

最佳答案

为什么 libc 版本会影响解析错误? g++ 版本会更有用。

gcc 在 3.4 版本左右更改了解析器,并解决了当时许多在旧 yacc 解析器中不容易修复的解析问题。这可以解释你所看到的。

关于c++ - 使用旧的 C 库调用临时对象的方法会导致编译器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2296744/

相关文章:

c++ - cmake - 何时在 CMakeLists.txt 文件中包含 include_directories

c++ - 指针指针方法 C++

linux - 如何从文件夹中的所有文件中删除具有特定字符串的行

java - 无法访问java中另一个类中方法的返回实例

c++ - 创建类的过程涉及虚继承

c++ - 为什么删除函数在字符串函数中出错?

linux - 如何在 AWS p2.xlarge 实例、AMI ami-edb11e8d 和最新的 nvidia 驱动程序 (375.39) 中的最新版本的 Tensorflow (1.0) 中安装 CUDA 8.0

python - 构建 docker 镜像时出现错误消息 "Error processing tar file(exit status 1)"

javascript - 通过一系列对象方法来处理 ajax 成功回调的干净方法是什么?

java - 如何编写一个对某些参数返回 True 的私有(private)方法?