为什么我们需要一个默认的构造函数来在C ++中通过引用传递对象?

盒装的

当我尝试以下操作时,我的C ++编译器给我一个错误“类Foo不存在默认构造函数”。

MyClass :: MyClass(const Foo&foo){...}

如果我传递了一个引用,则该对象应该已经初始化了,对吗?复制构造函数也不是问题,因为我明确定义了一个。那么,为什么需要一个默认的构造函数来传递引用呢?

我唯一能想到的就是它可能不知道要为其分配多少内存。如果那是问题,是否有办法告诉编译器我只打算动态分配此对象?我目前无法在网上找到任何答案,非常感谢您的帮助。

编辑:我只是要在我的实际代码中进行编辑。

MemberManager.cpp:

#include "MemberManager.h"

MemberManager::MemberManager(const NodeManager& nodeSet, std::vector<int> cctMat, int n)
{
    for(int i = 0; i < n; i++)
    {
        memSet[i] = Member();
    }
}

节点管理器

#include "Node.h"

class NodeManager
{
public:
    //constructors
    NodeManager(std::vector<double> crdMat, std::vector<Constraint> cstMat, int n):
        nodeSet(n) {};
    //copy
    NodeManager(const NodeManager& src):
        nodeSet(src.nodeSet) {};
}

我的确切错误消息是MemberManager :: MemberManager(...)的第一个主体括号下的红色下划线,它说NodeManager没有默认的构造函数。这是我的意图,但是我不明白为什么它需要默认的构造函数。

迈克·西摩

您不需要默认的构造函数即可通过引用传递对象。您的代码必须在做其他需要这种事情的事情。

我的猜测是MyClass有一个type的成员Foo如果它不是默认可构造的,则需要在其声明中或在构造函数的初始化程序列表中进行初始化:

MyClass::MyClass(const Foo& foo) : foo(foo) { ... }
                                   ^^^^^^^^
                                   initialiser list

这假定该成员被称为foo,并且应该通过复制function参数来初始化该成员

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么我们需要一个默认的构造函数来在C ++中通过引用传递对象?

来自分类Dev

为什么我们需要一个用户提供的const对象构造函数?

来自分类Dev

为什么我们需要在React Hook中返回一个函数?

来自分类Dev

在C ++中通过引用传递对象

来自分类Dev

为什么我们需要创建一个one-arg构造函数才能使用临时的无名对象?

来自分类Dev

Scala集合:为什么我们需要一个case语句来提取高阶函数中的值元组?

来自分类Dev

在C ++中声明const对象需要用户定义的默认构造函数。如果我有一个可变的成员变量,为什么不呢?

来自分类Dev

当我们为一个类的对象分配一个整数值时,为什么要调用参数化构造函数?

来自分类Dev

为什么在C ++ 11中,我们从vector :: resize中的一个函数移至2个版本?

来自分类Dev

不要在AngularJS函数中通过引用传递对象

来自分类Dev

为什么我们不能在构造函数中创建非静态自引用对象

来自分类Dev

为什么我们不能在构造函数中创建非静态自引用对象

来自分类Dev

Objective-C通过引用传递与通过指针传递。有什么不同?为什么我们根本需要它?

来自分类Dev

为什么我们需要一个扫描器对象来在 java 中获取输入

来自分类Dev

为什么javascript通过引用传递对象?

来自分类Dev

为什么对象通过引用自动传递?

来自分类Dev

为什么我们需要在MSIL中显式调用父构造函数?

来自分类Dev

为什么我们需要在JavaScript中定义构造函数

来自分类Dev

为什么我们需要在实体中声明非空构造函数?

来自分类Dev

C ++通过构造函数中的引用传递

来自分类Dev

在C ++中通过引用传递?

来自分类Dev

在R中的函数中更改全局对象/通过引用传递对象

来自分类Dev

通过引用传递Error对象,而不是从方法中抛出异常,是一个好主意吗?

来自分类Dev

为什么可以通过构造函数传递给引用一个临时值?

来自分类Dev

为什么我们需要通过 InterfaceFactory 来获取对象而不是仅仅传递特定的对象

来自分类Dev

通过引用另一个类的构造函数传递对象时出错

来自分类Dev

为什么我们可以在C ++中的构造函数中使用声明的变量

来自分类Dev

在C ++函数中,Rcpp对象如何传递给其他函数(通过引用或复制)?

来自分类Dev

在C ++函数中,Rcpp对象如何传递给其他函数(通过引用或复制)?

Related 相关文章

  1. 1

    为什么我们需要一个默认的构造函数来在C ++中通过引用传递对象?

  2. 2

    为什么我们需要一个用户提供的const对象构造函数?

  3. 3

    为什么我们需要在React Hook中返回一个函数?

  4. 4

    在C ++中通过引用传递对象

  5. 5

    为什么我们需要创建一个one-arg构造函数才能使用临时的无名对象?

  6. 6

    Scala集合:为什么我们需要一个case语句来提取高阶函数中的值元组?

  7. 7

    在C ++中声明const对象需要用户定义的默认构造函数。如果我有一个可变的成员变量,为什么不呢?

  8. 8

    当我们为一个类的对象分配一个整数值时,为什么要调用参数化构造函数?

  9. 9

    为什么在C ++ 11中,我们从vector :: resize中的一个函数移至2个版本?

  10. 10

    不要在AngularJS函数中通过引用传递对象

  11. 11

    为什么我们不能在构造函数中创建非静态自引用对象

  12. 12

    为什么我们不能在构造函数中创建非静态自引用对象

  13. 13

    Objective-C通过引用传递与通过指针传递。有什么不同?为什么我们根本需要它?

  14. 14

    为什么我们需要一个扫描器对象来在 java 中获取输入

  15. 15

    为什么javascript通过引用传递对象?

  16. 16

    为什么对象通过引用自动传递?

  17. 17

    为什么我们需要在MSIL中显式调用父构造函数?

  18. 18

    为什么我们需要在JavaScript中定义构造函数

  19. 19

    为什么我们需要在实体中声明非空构造函数?

  20. 20

    C ++通过构造函数中的引用传递

  21. 21

    在C ++中通过引用传递?

  22. 22

    在R中的函数中更改全局对象/通过引用传递对象

  23. 23

    通过引用传递Error对象,而不是从方法中抛出异常,是一个好主意吗?

  24. 24

    为什么可以通过构造函数传递给引用一个临时值?

  25. 25

    为什么我们需要通过 InterfaceFactory 来获取对象而不是仅仅传递特定的对象

  26. 26

    通过引用另一个类的构造函数传递对象时出错

  27. 27

    为什么我们可以在C ++中的构造函数中使用声明的变量

  28. 28

    在C ++函数中,Rcpp对象如何传递给其他函数(通过引用或复制)?

  29. 29

    在C ++函数中,Rcpp对象如何传递给其他函数(通过引用或复制)?

热门标签

归档