这是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++对常量引用更为宽容。