Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
错误:can';创建对象后不分配区域 我学习C++中的OOP的各种细节,并编写了代码。该代码的目的是玩弄ctor初始值设定项,并学习如何将作为类属性的引用初始化 #include <string> #include <iostream> using namespace std; class Corgi { private: const string nickname; const string& rNickname; public: Corgi(const string& _nickname): nickname(nickname), rNickname(nickname) {} }; int main() { Corgi buddy("buddy"); return 0; }_C++_Constructor_Reference - Fatal编程技术网

错误:can';创建对象后不分配区域 我学习C++中的OOP的各种细节,并编写了代码。该代码的目的是玩弄ctor初始值设定项,并学习如何将作为类属性的引用初始化 #include <string> #include <iostream> using namespace std; class Corgi { private: const string nickname; const string& rNickname; public: Corgi(const string& _nickname): nickname(nickname), rNickname(nickname) {} }; int main() { Corgi buddy("buddy"); return 0; }

错误:can';创建对象后不分配区域 我学习C++中的OOP的各种细节,并编写了代码。该代码的目的是玩弄ctor初始值设定项,并学习如何将作为类属性的引用初始化 #include <string> #include <iostream> using namespace std; class Corgi { private: const string nickname; const string& rNickname; public: Corgi(const string& _nickname): nickname(nickname), rNickname(nickname) {} }; int main() { Corgi buddy("buddy"); return 0; },c++,constructor,reference,C++,Constructor,Reference,我不明白为什么我会收到这个错误消息,以及如何修复它。那么,我为什么要得到它,以及如何修复它 非常感谢您的帮助。Corgi(const字符串和昵称):昵称(昵称),rNickname(昵称){} 用自身初始化成员昵称,这是一个问题,因为成员昵称此时未初始化 解决方案: Corgi(常量字符串和昵称):昵称(\u昵称),rNickname(昵称){} 我还考虑了这一点: Corgi(const字符串和昵称):昵称(昵称),rNickname(昵称){} 这将有助于正确初始化Corgi::n

我不明白为什么我会收到这个错误消息,以及如何修复它。那么,我为什么要得到它,以及如何修复它

非常感谢您的帮助。

Corgi(const字符串和昵称):昵称(昵称),rNickname(昵称){}
用自身初始化成员
昵称
,这是一个问题,因为成员
昵称
此时未初始化

解决方案:

Corgi(常量字符串和昵称):昵称(\u昵称),rNickname(昵称){}


我还考虑了这一点:

Corgi(const字符串和昵称):昵称(昵称),rNickname(昵称){}
这将有助于正确初始化
Corgi::nickname
(由于范围规则),但它为
Corgi::rNickname
引入了一个新问题(现在通过引用构造函数参数进行初始化)

对于这种情况,正确的答案是:

Corgi(const字符串和昵称):昵称(昵称),rNickname(this->昵称){}

昵称(昵称)->昵称(\u昵称)。在编译过程中,您至少应该得到一个未使用变量昵称的警告。gcc甚至明确表示:“Corgi::昵称”是用itself@mfnx我使用CLion,看不到任何警告。关于此,仅供参考:。
Project(1343,0x7fff7b2f2000) malloc: *** mach_vm_map(size=140734714511360) failed (error code=3)
*** error: can't allocate region
*** set a breakpoint in malloc_error_break to debug
terminate called after throwing an instance of 'std::bad_alloc'
  what():  std::bad_alloc