먼저 문제가 발생하지는 않지만 가능한 한 간단하게 유지하려고합니다. Math
이라는 템플릿 기반 클래스를 사용하고 있으며 다른 많은 것들 외에 무작위 기능이 있습니다.템플릿이 적용된 클래스의 정적 비 템플릿 함수
서로 다른 유형의 임의 함수와 임의의 시드를 설정하는 함수입니다. 따라서 시드 함수를 제외한 모든 함수는 class Real
유형을 사용합니다. 나는 씨앗을 설정할 때 좀 랜덤 (하하) 함수를 호출 할 수 있도록 입력 통과해야 :이 실제 문제가 아니라 다시
Math<u32>::SeedRandom(System::time());
을,하지만 난 그것을 할 수 있는지 궁금합니다 <u32>
을 사용할 필요없이 동일한 결과를 얻을 수 있습니다. 여기
Math 클래스에서 미리보기 : BTW
template <class Real>
class Math
{
public:
static void SeedRandom(u32 seed) { srand(seed); }
static Real UnitRandom() { return (Real)((f64)rand()/(f64)RAND_MAX); }
};
. f64
은 double
및 u32
~ unsigned int
으로 typedef되었습니다.
그래, 그 함수를 호출하는 싱글 톤 객체가 가능 하겠지만, 그 경우에는 정말 못생긴 것이다. :) 코드를 작성하는 방법이 있는지 알고 싶기 때문에 유형을 지정할 필요가 없다. 조금만 시도해 보았습니다. 이걸'Math :: SeedRandom ((u32) System :: time());'과 같이 호출 할 수 있습니다. 이것은 유형이 사용되지 않는다는 것을 적어도 보여줄 것입니다. 그러나 컴파일 시간이 불필요하게 길어지며, 더 이상 추악한 경우에만 ''을 호출하십시오. –
v01pe
@ v01pe : 내 음란 한 편향된 의견에서'void *'를 사용하면 형식이 사용되지 않는다는 것을 결코 암시하지 않습니다. IMO는 이미 말했듯이 독립형 기능이 최상의 솔루션입니다. 독립 실행 형 함수는 어떤 식 으로든 C++에서 OOP의 패러다임에 모순되지 않습니다. –
물론 여러분이 옳습니다.'void * '를 사용한다고해서 반드시 그런 것은 아닙니다! – v01pe