c ++ - < неразрешенный тип перегруженной функции >

Некоторые улучшения для вас могут быть:

1) Не используйте select *. Вместо этого используйте имена столбцов. например select products.id, products.title, productimages.imageurl

2) Используйте JOIN вместо вложенного цикла

Итак, вы можете попробовать выполнить запрос таких данных, как:

select products.id, products.title, productimages.imageurl
from products
join productimages on products.id = productimages.productid
ORDER BY products.id LIMIT 10
28
задан FluxLemur 31 January 2018 в 19:18
поделиться

2 ответа

Тип pointer-to-member-function отличается от pointer-to-function.

Тип функции различается в зависимости от того, является ли она обычной или нестатической функцией-членом некоторого класса:

int f(int x);
the type is "int (*)(int)" // since it is an ordinary function

И

int Mat::f2(int x);
the type is "int (Mat::*)(int)" // since it is a non-static member function of class Mat

Примечание: если это статическая функция-член класса Fred, ее тип такой же, как если бы она была обычной функцией: "int (*)(char,float)"

В C ++ функции-члены имеют неявный параметр который указывает на объект (указатель this внутри функции-члена). Нормальные функции C могут рассматриваться как имеющие другое соглашение о вызовах от функций-членов , поэтому типы их указателей (указатель на функцию-член и указатель на функцию) различны и несовместимы. C ++ вводит новый тип указателя, , называемый указатель на член, который может быть вызван только путем предоставления объекта .

ПРИМЕЧАНИЕ: не пытайтесь «привести» функцию указатель к члену в указатель на функцию; результат не определен и, вероятно, катастрофический. Например, указатель на функцию-член не обязан содержать машинный адрес соответствующей функции. Как было сказано в последнем примере, если у вас есть указатель на обычную функцию C, используйте либо функцию верхнего уровня (не член), либо статическую (класс) функцию-член.

Подробнее об этом Здесь и здесь .

38
ответ дан 31 January 2018 в 19:18
поделиться

Я получил эту ошибку от не использования круглых скобок для вызова функции. У меня было это:

Eigen::Quaterniond value; ... myFunction(value.x);

И я зафиксировал это путем изменения последней строки на это:

myFunction(value.x());

0
ответ дан 28 November 2019 в 01:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: