기본 질문에 답하는 것을 좋아하지 않는 사람들을위한 공정한 경고 : 오랫동안 C++ 코드를 많이 보지 못했습니다. 내가 묻는 것은 기본적인 문법적 인 것들이다. 나는 단지 질문을 공식화하기위한 언어에 대해 충분히 알지 못한다. 나는 google에 무엇을 모른다. 바라건대 여러분 중 일부는 내 질문을 응집력있는 것으로 편집하는 것을 도와 줄 수 있기를 바랍니다.Dlib : 무시 플래그가 1로 설정된 mmod_rect를 초기화하는 방법은 무엇입니까?
그래서 문제가 있습니다. 나는 현재 dlib와 관련된 프로젝트를 진행 중이다. dlib에는 mmod_rect라는 구조체가 있는데, here으로 정의되어있다.
struct mmod_rect
{
mmod_rect() = default;
mmod_rect(const rectangle& r) : rect(r) {}
mmod_rect(const rectangle& r, double score) : rect(r),detection_confidence(score) {}
mmod_rect(const rectangle& r, double score, const std::string& label) : rect(r),detection_confidence(score), label(label) {}
rectangle rect;
double detection_confidence = 0;
bool ignore = false;
std::string label;
operator rectangle() const { return rect; }
bool operator == (const mmod_rect& rhs) const
{
return rect == rhs.rect
&& detection_confidence == rhs.detection_confidence
&& ignore == rhs.ignore
&& label == rhs.label;
}
};
inline mmod_rect ignored_mmod_rect(const rectangle& r)
{
mmod_rect temp(r);
temp.ignore = true;
return temp;
}
관련성이있는 경우 직사각형에 대한 문서는 here입니다. 기본적으로 rectangle은 left, top, right 및 bottom에 대해 정수를 전달하여 초기화되는 클래스입니다. 이어서
std::vector<mmod_rect> rects;
을는 라인 벡터에 밀어 : I 위 혼란하고
rects.push_back(rectangle(left, top, right, bottom));
다음
I 먼저 구비 된 작동 코드 mmod_rects 벡터를 정의 선. rect는 mmod_rects의 벡터이며 rect의 벡터가 아니므로 코드가 생성자를 호출하여 rect에 대해 호출하고 벡터에 푸시하는 방법은 무엇입니까? 왜 컴파일러 오류가 발생하지 않습니까? 나는 그것이라고 mmod_rect의 구조체 정의의 라인과 관련이있다 가정
mmod_rect(const rectangle& r) : rect(r) {}
나의 이해는 이것이 당신이 사각형에 대한 참조를 전달하여 mmod_rect를 구성 할 수 있다는 것을 의미한다는 것이다. 난 그냥 사람이 바로이 구문이 무엇을 설명 할 수있는 경우 콜론
: rect(r) {}
를 사용하여 구문에 의해 혼란 스러워요, 그리고와 push_back 작업이 여기에 어떻게 작동하는지, 그 위대한 것.
이제 내가 물어보고 싶은 주요 사항에 대해 알아 보겠습니다. 내 목표는 ignore 플래그가 1로 설정된 mmod_rects로 벡터 rect을 채우는 것입니다. 어떻게해야합니까? 다음 코드가 목표를 달성할까요?
mmod_rect r(rectangle(left, top, right, bottom));
r.ignore = 1;
rects.push_back(r);
ignored_mmod_rect를 사용하면 더 나은 방법일까요? 코드가하는 일을 완전히 이해하지 못합니다.
일부 용어를 분해 해 주셔서 감사합니다. 회원 초기 자 목록에 대한 문서를 보면 상황을 이해하는 데 도움이되었습니다. –