0
알 수없는 인수를 취하여 입력 유형의 배열을 만드는 가변 인자 함수를 작성하려고합니다 (템플릿 함수이므로 입력 인수가 float 일 경우 float ptr을 반환하고Variadic 함수 범용 센티넬 값
NAN
또는 INFINITY
중 하나는 이론적으로는 적어도 내 용도로는 사용되지 않으므로 센티널 값으로 사용할 수 있다고 생각했습니다.
은 더 많거나 적은 기능의 int를 제외한 모든 것을 계획대로이 기능은 작동이
template<typename T>
T* arrayIt(T first, ...)
{
va_list ap;
va_start(ap, first);
T n = first, *array = (T*)malloc(sizeof(T));
int sz = 0;
while(!(isnan(n)) /* or infinite(n) */){
sz++; // inc array size
array = realloc(array, sizeof(T)*(sz+1)); // realloc
array[sz] = n;
n = va_arg(ap, T); // update temp
}
array[0] = sz; // store size of array
return (array + 1); //doing this places the first element at array[0]
// the size of the array is stored at array[-1]
}
것 같습니다. 나는이 방법을 사용하여 NAN
을 sentinal으로 사용하는 방법을 알고 싶습니다. 매크로없이이 작업을 수행하고 싶습니다.
즉 int * a = arrayIt<int>(1,2,3,4,5,6,NAN);
나는 그것이 가능하다는 것을 알지 못했습니다. 나는 마지막 C++ 릴리스에 갇혀 있었고 새로운 것을 배우는 데 시간을 투자하지 않았습니다. 나는 기회가있을 때 그것을 시도 할 것이다! –
이것은 정확히 내가 필요로했던 것입니다! –