完全相同C++代码适用于Visual Studio,但不适用于Xcode



这是C++类的作业,它在Windows上的Visual Studio 2013中完美编译和运行,但我主要在Vim或Xcode的OSX上编码。
XCode 立即向我显示错误"没有匹配的构造函数来初始化'Vector'",当我尝试使用 Makefile 和终端进行编译时也是如此。

    Vektor C = A + B; // !!! no matching constructor for initialization of 'Vector'

然而

    Vektor B = A;
    A + B;

在OSX和Windows上都能完美运行。
我没有尝试导出/导入项目文件,它是每个环境中的全新文件。

完整代码:http://pastebin.com/xabY0w08

这是一个已知问题吗,如果是这样,为什么会发生,有没有办法让它工作?

将复制构造函数定义为具有对类对象的常量引用。例如

Vektor( const Vektor & );

您必须更改:

Vektor(Vektor &quelle);

Vektor(const Vektor &quelle);

原因是临时对象(A+B)无法绑定到非常量引用,

in

Vektor C=A+B;

operator+返回一个Vektor - 值,但构造函数接受Vektor& - 引用。

您需要实现一个接收const Vektor&的构造器(只需修改现有的构造器)。

它适用于Windows,因为(不确定)Visual C++对常量引用更为宽容。

相关内容

最新更新