【发布时间】:2014-01-25 00:17:27
【问题描述】:
这是一个 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
这是一个已知问题吗?如果是,为什么会发生?有什么办法可以让它发挥作用?
【问题讨论】:
-
您是否忘记创建复制构造函数参数
const? -
您在代码中用 k 拼写
Vektor,但在错误中却用 c 拼写? -
在此过程中,请检查您之前的警告日志。当您使用非标准扩展时,VS 应该警告您,这就是其中之一。 VS 支持来自右值的非常量引用;标准没有。
-
还请注意,即使进行了以下更改,您也只能填写 Rule of Three 的 2/3。您还应该实现一个赋值运算符(如果愿意,还应该实现一个移动构造函数和一个移动赋值运算符)
标签: c++ xcode visual-studio class compiler-errors