У меня есть класс, который я использую _mm_prefetch()
для предварительного запроса на cacheline, содержащий элемент класса, типа двойной:Предварительная выборка двойного члена класса требует кастинга на char *?
class MyClass{
double getDouble(){
return dbl;
}
//other members
double dbl;
//other members
};
_mm_prefetch()
подпись:
void _mm_prefetch (char const* p, int i)
Но когда я делаю:
_mm_prefetch((char*)(myOb.getDouble()), _MM_HINT_T0);
GCC жалуется:
error: invalid cast from type 'double' to type 'char*'
Итак, как мне предварительно выбрать этот класс?
Будет ли '(char *) (& myOb.getDouble()) работать? Предполагая, что 'getDouble()' возвращает ссылку на 'dbl' – Noel
@Noel getDouble() просто возвращает значение – user997112
, вам необходимо передать _mm_prefetch указатель, то есть адрес' dbl'. Я бы предложил изменить ваш getter в 'MyClass' на' double & getDouble() {return dbl;} ', если это возможно для вас – Noel