У меня есть конструктор прототип, который выглядит как:Конструктор шаблонов конкретизации с аргументами по умолчанию
template <typename type_position> window(
const int size[2],
const char* caption="Window", const SDL_Surface* icon=NULL,
bool fullscreen=false, bool vsync=true, bool resizable=false, int multisample=0,
type_position position=type_position(0)
)
Затем я хочу, чтобы построить экземпляр:
new window(screen_size,"My Window",NULL,fullscreen);
вопрос (я предполагаю) является то, что T
не может (т. е. может быть int
или long
или short
и т. д.). Я получаю ошибку:
error C2660: 'window' : function does not take 4 arguments
Затем я попытался указать тип:
new window<int>(screen_size,"My Window",NULL,fullscreen);
Но это не работает:
error C2512: 'window' : no appropriate default constructor available
error C2062: type 'int' unexpected
Я сделал некоторые исследования, и о самое близкое, что я мог получить, было похоже на вопрос «C++ template function default value», за исключением того, что в моем случае параметр шаблона может быть выведен из первого аргумента.
Итак, я застрял или есть что-то, что мне не хватает?
Какой компилятор вы используете? Потому что с VS2010 func («Hello»); работает отлично. –
Не могли бы вы привести короткий пример, который воспроизводит вашу проблему для работы? – chris
Что не работает? Ваше предложение работает для меня: http://ideone.com/n0jgN – jpalecek