Я работаю с шаблонами, с которыми я не очень знаком, но происходит нечто странное.У меня есть шаблонный класс, который наследуется от других шаблонных классов.
Проблема заключается в том, что когда я создаю экземпляр класса в методе main, он работает как положено.Однако, когда я создаю тот же экземпляр внутри функции, он выдает ошибку компиляции: «не совпадает функция», указывающая на конструктор шаблонного класса.
Вопрос в том, почему он работает в методе main, ноне внутри функции тот же кусок кода (проблем с включением нет)
Код огромен, но я постараюсь проиллюстрировать на примере
int main() {
MyTemplatedClassParent<parameters> example(arguments);
MyTemplatedClassChild<parameters> example_1(arguments);
}
Работает отлично.Однако
int main() {
myMethod();
}
с
myMethod() {
MyTemplatedClassParent<parameters> example(arguments);
MyTemplatedClassChild<parameters> example_1(arguments);
}
нет.По существу, во втором случае он не распознает совпадение вызова и конструктора класса и предлагает в качестве кандидата конструктор класса, который я хочу использовать.Дело в том, что в основном методе работает то же самое, единственное отличие состоит в том, что во втором случае он объявляется внутри метода.
edit:
Хорошо, почему-то проблема была в параметрах шаблонов, которые изначально были по умолчанию.Я почти ничего не знаю о шаблонах, но похоже, что между параметрами двух экземпляров, которые возникали при вызове метода, были несоответствия.Не знаю, как и почему, но как только я явно указал параметры шаблонов, он скомпилировался и работал нормально.Опять же извините за то, что не дал много информации, но мои знания о шаблонах очень ограничены.