小编ewp*_*sey的帖子

为什么我们需要一个默认构造函数来在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();
    }
}
Run Code Online (Sandbox Code Playgroud)

NodeManager.h

#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) {};
}
Run Code Online (Sandbox Code Playgroud)

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

c++ parameters constructor default required

3
推荐指数
1
解决办法
1955
查看次数

标签 统计

c++ ×1

constructor ×1

default ×1

parameters ×1

required ×1