2017-11-21 3 views
1

객체 :템플릿 내가 다음과 같이 보이는 클래스를 썼다

‘Langevin<main()::<lambda(double, double)>, std::linear_congruential_engine<long unsigned int, 16807ul, 0ul, 2147483647ul> >::force’ will be initialized after [-Wreorder] Function & force;

내가 렸다는 오전, 실수는 무엇인가?

+1

경고가 있지만 오류는 아닙니다. –

답변

4

컴파일러가 데이터 구성원 forceqp 이후에 초기화되며 qp이 나타나기 전에 member initializer list으로 초기화됩니다.

데이터 멤버는 항상 선언 된 순서대로 초기화됩니다.

그런 다음 정적이 아닌 데이터 멤버는 클래스 정의에서 선언 된 순서로 초기화됩니다.

이러한 종류의 혼란을 피하기 위해 동일하게 만들어야합니다.

Langevin(RNG & gen_, Function & force_, vector & qp_) 
: qp(qp_), gen(gen_), force(force_) {} 
관련 문제