Кавычки защищают либо ?
, либо :name
от взятия в качестве держателя места - они берутся буквально. Вам нужно поместить процентные знаки вокруг строки, которую вы передаете, и использовать простой заполнитель без кавычек. I.e.:
self.cursor.execute(
"select string from stringtable where string like ? and type = ?",
('%'+searchstr+'%', type))
Обратите внимание, что ни ?
не находится в кавычках - и это точно так же, как и должно быть для них в качестве заполнителей.
Использование
ptr -> print(userPreference);
было бы действительно, если бы ptr
было типа Object*
. Поскольку он имеет тип Object**
, вам нужно использовать выражение, которое оценивается как Object*
. Например,
for(int i = 0; i < arrayCounter; i++)
{
ptr[i]->print(userPreference);
}