А теперь удаленный (почему?) Ответ от @James McNellis указывает на правильное решение: вы не.
Используйте для этого указатели, поскольку эти буферы, очевидно, являются выходными параметрами (то есть они используются для «возврата» дополнительных значений) и соответственно вызывают его:
bool CheckCollision(T* obj1, T* obj2, float* ColBuf1 = 0, float* ColBuf2 = 0){
// your code...
// ...
// test before assigning:
if(ColBuf1 != 0)
*ColBuf1 = /*whatever you have*/;
// same with ColBuf2
}
float ColBuf1, ColBuf2;
CheckCollision(SomeObjPtr, AnotherObjPtr, &ColBuf1, &ColBuf2);
Или, что еще лучше, перегрузите его:
bool CheckCollision(T* obj1, T* obj2);
bool CheckCollision(T* obj1, T* obj2, float* ColBuf1, float* ColBuf2);
Хотя я все еще использовал бы указатели, чтобы указать, что эти буферы будут заполнены.