помогите разобраться с шаблонными классами
error C2760: синтаксическая ошибка: ожидался токен "<Нет данных>", а не "<Нет данных>"
среда разработки visual studio 2017
template <typename T1, typename T2, typename T3>
class element {
string name;
Menu* menu = NULL;
Menu* left = NULL;
Menu* right = NULL;
public:
element(T1 A = NULL, T2 B = NULL, T3 C = NULL) {
menu = dynamic_cast<MENU*>(A);
left = dynamic_cast<MENU*>(B);
right = dynamic_cast<MENU*>(C);
}
void get_type_menu() {
cout << typeid(menu).name << endl;
}
};
int main()
{
hMenu A;
wMenu B;
hwMenu C;
element<hMenu*, wMenu*, hwMenu*> el(&A, &B, &C);
el.get_type_menu();
return 0;
}
Все просто, вы пытаетесь указатель к указателю на указатель привести, передавая его как тип в шаблон. Т.е. для решения проблемы вам необходимо
template <typename T1, typename T2, typename T3>
class element {
string name;
Menu* menu = NULL;
Menu* left = NULL;
Menu* right = NULL;
public:
element(T1* A = NULL, T2* B = NULL, T3* C = NULL) {
menu = dynamic_cast<MENU*>(A);
left = dynamic_cast<MENU*>(B);
right = dynamic_cast<MENU*>(C);
}
void get_type_menu() {
cout << typeid(menu).name << endl;
}
};
int main()
{
hMenu A;
wMenu B;
hwMenu C;
element<hMenu, wMenu, hwMenu> el(&A, &B, &C);
el.get_type_menu();
return 0;
}
Хотя на самом деле тут нет смысла передачи в класс типов, т.к. вы их не используете. А передавая какой-то тип в метод, его можно пометить как template
и генерировать тип на лету.
Т.е. вместо шаблона класса сделать только метод шаблонным.
class element {
string name;
Menu* menu = NULL;
Menu* left = NULL;
Menu* right = NULL;
public:
template <typename T1, typename T2, typename T3>
element(T1* A = NULL, T2* B = NULL, T3* C = NULL) {
menu = dynamic_cast<MENU*>(A);
left = dynamic_cast<MENU*>(B);
right = dynamic_cast<MENU*>(C);
}
void get_type_menu() {
cout << typeid(menu).name << endl;
}
};
И еще не совсем понятно каким образом вы передавали тип в dynamic_cast
а не сам параметр метода.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
у меня такая ситуация : нужно сделать софт который будет по видео распознавать машины и какой размер они занимают на картинке, на фоне дороги,...
Хочу сделать пошаговою регистрацию с помощью Vue routerНо, не понимаю как можно реализовать задумку