PHP 및 C #에서 상수는 선언 된대로 초기화 할 수 있습니다.
class Calendar3
{
const int value1 = 12;
const double value2 = 0.001;
}
두 수학 벡터를 비교하기 위해 다른 클래스와 함께 사용되는 펑터에 대한 다음 C ++ 선언이 있습니다.
struct equal_vec
{
bool operator() (const Vector3D& a, const Vector3D& b) const
{
Vector3D dist = b - a;
return ( dist.length2() <= tolerance );
}
static const float tolerance = 0.001;
};
이 코드는 g ++에서 문제없이 컴파일되었습니다. 이제 C ++ 0x 모드 (-std = c ++ 0x)에서 g ++ 컴파일러는 오류 메시지를 출력합니다.
오류 : 정수가 아닌 유형의 정적 데이터 멤버 'tolerance'의 클래스 내 초기화에 'constexpr'이 필요합니다.
static const
클래스 정의 외부 에서이 멤버를 정의하고 초기화 할 수 있다는 것을 알고 있습니다 . 또한 비 정적 상수 데이터 멤버는 생성자의 이니셜 라이저 목록에서 초기화 할 수 있습니다.
그러나 PHP 또는 C #에서 가능한 것처럼 클래스 선언 내에서 상수를 초기화하는 방법이 있습니까?
최신 정보
static
g ++의 클래스 선언 내에서 이러한 상수를 초기화 할 수 있기 때문에 키워드를 사용 했습니다. 선언 여부에 관계없이 클래스 선언에서 상수를 초기화하는 방법이 필요합니다 static
.
I used static keyword just because it was possible to initialize such constants within the class declaration in g++. I just need a way to initialize a constant in a class declaration no matter if it declared as static or not.
회원이되어야할지 말지 결정 하는 잘못된 방법static
입니다. 어휘 게으름이 코드의 의미를 결정하게하지 마십시오.