2014-01-16 3 views
1

여러 연산자를 오버로드하여 gsl 함수 (예 : gls_vector)를 향상시키고 싶습니다. 내 생각은 별도의 네임 스페이스에 새로운 클래스를 만드는 것이었다 : gsl_vector 생성자

namespace gsl 
{ 
    class gsl_vector : public gsl_vector 
    { 

    }; 
} 

지금 내 문제는 내가 생성자가 필요하다는 것입니다. 원래의 gsl_vector는 C로 완전히 작성 되었기 때문에 ( http://www.boost.org/doc/libs/1_53_0/libs/numeric/odeint/doc/html/boost_numeric_odeint/odeint_in_detail/state_types__algebras_and_operations.html#boost_numeric_odeint.odeint_in_detail.state_types__algebras_and_operations.construction_resizing에 따라) 그러한 생성자를 가지고 있지 않습니다. 그럼,이 작업에 적합한 생성자를 작성하려면 어떻게해야합니까? 아니면 불가능하다고 생각합니까?
감사합니다.

+0

빈 생성자가 수행하거나 기본값으로 초기화 할 수 있습니다. –

+0

odeint에 gsl_vector를 사용 하시겠습니까? 이 경우 state_wrapper를 전문화하여 gsl_vector에 사용자 정의 "생성자"를 추가 할 수 있습니다. – headmyshoulder

+0

'class gsl_vector : public gsl_vector'는 나에게별로 의미가 없습니다. – Shoe

답변

0

gsl_vector에서 새 유형을 파생시키는 것이 좋지 않다고 생각합니다. 더 많은 문제를 추가하면 도움이됩니다. 한 가지 요점은 gsl_vector가 C- 구조체라는 것입니다. 일반적으로 gsl_vector_alloc을 호출해야하기 때문에 인스턴스를 쉽게 얻을 수 없습니다. 또 다른 요점은, 다른 gsl 함수를 대신하여 새 벡터를 사용할 수 없다는 것입니다. 그들은 순전히 C로 작성되어 파생 된 클래스의 포인터를 전달할 수 없습니다.

그럼에도 불구하고 이러한 종류의 벡터를 작성해야한다면 gsl_vector_alloc 및 gsl_vector_free 코드를 참조하여 생성자 및 소멸자를 만들어야합니다.