Будьте проще, используйте DOM
$("li").click(function(e) {
if (this.previousSibling != null)
{
/* do something */
}
});
В последних примерах не будет разрешено, поскольку вы запрашиваете указатели, но вместо этого пытаетесь предоставить локальные временные объекты.
std::vector<Ask*> ui ={
new AskString{"Enter your name: ", 3, 25},
new AskString{"Enter your city: ", 2, 25},
new Ask{"Enter your age: "}
};
Это было бы разрешено, и не было бы двусмысленности типов.
Это тоже было бы правильно:
std::vector<Ask*> ui ={
new AskString("Enter your name: ", 3, 25),
new AskString("Enter your city: ", 2, 25),
new Ask("Enter your age: ")
};
И ваш пример больше похож на:
std::vector<Ask> ui ={ // not pointers
{"Enter your name: "},
{"Enter your city: "},
{"Enter your age: "}
};
std::vector<AskString> uiString ={ // not pointers
{"Enter your name: ", 3, 25},
{"Enter your city: ", 2, 25},
{"Enter your age: ", 7, 42}
};
и опять же не будет двусмысленности по типам.
Список инициализаторов C ++ однородный , что означает, что он должен иметь один и тот же тип, поэтому пример №2 отсутствует. Если вы использовали new
в примере 1, это сработает.