完全相同的C ++代码在Visual Studio中工作,但在Xcode中不起作用

时间:2014-01-07 10:41:56

标签: c++ xcode visual-studio class compiler-errors

这是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

这是一个已知问题,如果是这样,为什么会发生这种情况,是否有任何方法可以使其发挥作用?

3 个答案:

答案 0 :(得分:6)

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

Vektor( const Vektor & );

答案 1 :(得分:4)

你必须改变:

Vektor(Vektor &quelle);

Vektor(const Vektor &quelle);

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

答案 2 :(得分:1)

in

Vektor C=A+B;

operator+会返回Vektor - 值,但您的构造函数会接受Vektor& - 引用。

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

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