내 C++ 컴파일러에서 다음을 시도 할 때 "Foo 클래스에 대한 기본 생성자가 없습니다"라는 오류 메시지가 표시됩니다.C++에서 참조로 객체를 전달하기 위해 기본 생성자가 필요한 이유는 무엇입니까?
MyClass에 :: MyClass에 (const를 푸 & 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();
}
}
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) {};
}
내 정확한 오류 메시지가 MemberManager :: MemberManager (...) 그것의 첫 번째 바디 브래킷 아래에 빨간색 밑줄입니다 NodeManager에 대한 기본 생성자가 없다고 말합니다. 이것은 내 의도이지만 기본 생성자가 필요한 이유는 모르겠습니다.
어떤 언어입니까? –
내가했던 것처럼 [tag : C++] 태그도 추가해야합니다. –
'Foo'를 입력으로받는 MyClass에 대한 생성자를 보여줍니다. 'Foo'는 어떤 종류의 생성자를 가지고 있습니까? 오류가 발생하면 그 'MyClass' 생성자에 대한 호출은 어떻게 생겼을까요? 컴파일러는'Foo'를 생성 할 수없는 것을 전달하고 있다고 당신에게 말하려고합니다. –