我有一个不幸的问题。我的 GCC 4.6.3 编译器拒绝编译我的移动构造函数。将示例中的第 6 行替换为“MemoryBlock(const MemoryBlock & other)”将使其编译,但不使用下面的移动构造函数声明。似乎编译器不知道 C+11,即使它应该使用 4.6.3。正确的?
#include <cstddef>
class MemoryBlock
{
public:
MemoryBlock(MemoryBlock && other) //<----------- RAD 6.
{
}
private:
size_t _length; // The length of the resource.
int* _data; // The resource.
};
int main() {
}
编译器输出:
prog.cpp:6:28: 错误: '&&' 标记之前的预期 ',' 或 '...'
prog.cpp:6:36: 错误:无效的构造函数;您的意思可能是“MemoryBlock (const MemoryBlock&)”</p>
制作:* [slask] 错误 1
海合会版本:
g++ (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3 (Kör från labbsal i skolan)
生成文件:
%.out: %.cpp
g++ -g -W -Wall -std=c++0x $*.cpp -o $*.out;