문제

부스트 :: multi_array의 사본을 할당하고 싶습니다. 어떻게 할 수 있습니까? 할당하려는 객체는 기본 생성자로 초기화되었습니다.

차원과 크기가 동일하지 않기 때문에이 코드는 작동하지 않습니다.

class Field {
  boost::multi_array<char, 2> m_f;

  void set_f(boost::multi_array<short, 2> &f) {
    m_f = f;
  }
}

대신 사용해야 할 사항 m_f = f ?

도움이 되었습니까?

해결책

크기를 조정해야합니다 m_f 할당하기 전에. 다음 샘플에서 볼 수 있습니다.

void set_f(boost::multi_array<short, 2> &f) {
    std::vector<size_t> ex;
    const size_t* shape = f.shape();
    ex.assign( shape, shape+f.num_dimensions() );
    m_f.resize( ex );
    m_f = f;
}

더 나은 방법이있을 수 있습니다. 변환 short 에게 char 암시 적입니다. 사용을 고려해야합니다 std::transform 명시적인 변환을 원한다면.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top