2 차원 집합의 볼록 선체를 찾는 클래스가 있습니다. 그것은 안에 2 Eigen::Matrix<double, 2, 1>
구조체를 포함하고 있습니다.고유 정렬되지 않은 배열 어설트
class Foo{
public:
Foo(Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic>);
private:
struct edge{
unsigned int a;
unsigned int b;
Eigen::Matrix<double, 2, 1> slope;
double mag;
Eigen::Matrix<double, 2, 1> normal;
std::vector<unsigned int> list;
};
Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic> points;
std::vector<edge> edges
};
같은 벡터 edges
에 가장자리를 추가 할 때 내가 어설 션 오류가 점점 오전 :
void Foo::DoThing(){
edges.push_back(edge());
}
정확한 오류는 다음과 같습니다
이 (제거 많은 것들로)과 같다어설 션 실패 : (reinterpret_cast (배열) & 0xf) == 0 & & "이 어설 션은 여기에 설명되어 있습니다." "http://eigen.tuxfamily.org/dox-devel/group__TopicUnalign edArrayAssert.html" "****이 웹 페이지를 읽으십시오 !!! **** ", \ 어쩌구 \ 어쩌구 \ 저쩌구 \를 포함 파일 \ 고유 \ 고유-고유-dc6cfdf9bcec \ 고유 \ SRC \ 코어 \의 densestorage.h, 라인 (86)
내가 웹 페이지에 가서 읽어 다음과 같이 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
내가 구조체에 추가 : :이 매크로를 추가 할 필요가있다.
struct edge{
unsigned int a;
unsigned int b;
Eigen::Matrix<double, 2, 1> slope;
double mag;
Eigen::Matrix<double, 2, 1> normal;
std::vector<unsigned int> list;
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
};
그러나 오류가 계속 이것은 VS 2013와 아이겐 버전 3.2.9에 무슨 일이 일어나고 동일한 코드 수정되지 않은 작품. 버전 3.2.0에서 괜찮아 .GCC 버전 5.3 리눅스에서 아이겐의 베타 빌드와 함께 잘 작동합니다.이 새로운 버전으로이 문제를 일으키는 내가 뭘 잘못하고 있습니까?
이 예제에서'Eigen :: aligned_allocator'와'Eigen :: aligned_allocator > '의 차이점은 무엇입니까? 내가 물어 보는 이유는 모두 오류없이 코드를 생성하기 때문입니다. –
Matt
다른 유형을 위해 만들어진 할당자를 사용하면 * 런타임에 * 발생할 수있는 것처럼 들리므로주의해야합니다. – SpamBot