gpt4 book ai didi

C++ Move构造函数无法编译

转载 作者:行者123 更新时间:2023-11-28 07:23:23 25 4
gpt4 key购买 nike

我有一个不幸的问题。我的 GCC 4.6.3 编译器拒绝编译我的 move 构造函数。将示例中的第 6 行与“MemoryBlock(const MemoryBlock & other)”交换将使其编译,但不使用下面的 move 构造函数声明。似乎编译器不知道 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: error: expected ‘,’ or ‘...’ before ‘&&’ token

prog.cpp:6:36: error: invalid constructor; you probably meant ‘MemoryBlock (const MemoryBlock&)’

make: * [slask] Error 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;

最佳答案

尝试使用 -std=c++11 而不是 -std=c++0x。虽然您的编译器知道用法,但 -std=c++0x “关闭”了这些新规则。

关于C++ Move构造函数无法编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19094678/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com