의 복사본을 가져옵니다. 임의의 고유 벡터/배열 유형의 내용을 std :: array로 변환하려고합니다. 나는 고유치의 문서에서이 부분을 읽어 http://eigen.tuxfamily.org/dox/TopicFunctionTakingEigenTypes.html 그래서 이것은 내 기능입니다 :고유 라이브러리 : 템플릿 함수 매개 변수
template<typename DERIVED>
std::array<typename Eigen::DenseBase<DERIVED>::Scalar, Eigen::DenseBase<DERIVED>::RowsAtCompileTime>
toStl (const Eigen::DenseBase<DERIVED>& input)
{
... // Do conversion
}
문제는 내가 사본을하기 위해 입력 매개 변수 유형에서 앰퍼샌드를 제거 할 때, 내가를 얻을, 지금 빈 입력 변수. 그것은 계수 0에 대한 가짜 값을 포함하고 나머지는 0입니다.
참조로 매개 변수를 가져 가면 모든 것이 정상적으로 작동합니다. 아무도 왜 저에게 말할 수 있습니까?
추 신 : 내가 왜 사본을 가져 가고 싶은지 궁금한 사람들을 위해; 이 대화에서 최적화 도구를 돕기 위해 제안 되었습니까? http://www.youtube.com/watch?v=eR34r7HOU14 (두 번째 끝에서 끝까지)
'Eigen :: DenseBase'에는 복사 생성자가 private 인 것처럼 보입니다. 따라서 앰퍼샌드없이 어떻게 컴파일했는지 명확하지 않습니다. –
실제로'template 명시 적 DenseBase (const DenseBase <** OtherDerived **>)'는 비공개입니다. 그래서 _same_ type ('Eigen :: DenseBase ')에 대한 복사 생성자가 존재합니다 - 선언을 찾을 수는 없지만 - 기본 정의를 사용합니다. 수업이 비어 있기 때문에 아무 것도 복사되지 않아 내 문제를 설명합니다. –