Russian Qt Forum
Ноябрь 24, 2024, 14:02 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2 3   Вниз
  Печать  
Автор Тема: имя класса и шаблон  (Прочитано 9269 раз)
kjefes
Гость
« : Март 13, 2012, 21:37 »

Здравствуйте, скажите, насколько правильна следующая конструкция?
Код:
template <class T>
class T
{
 //...
};

Ибо мне как раз такое и нужно, но компилятор Qt ругается:
"ошибка: using template type parameter 'T' after 'class'", а компилятор VS не выдает никаких ошибок.


Записан
mutineer
Гость
« Ответ #1 : Март 13, 2012, 21:43 »

А что ты пытаешься этим вообще сделать? имхо, оно как-то бессмысленно
Записан
BRE
Гость
« Ответ #2 : Март 13, 2012, 21:45 »

но компилятор Qt ругается:
Компилятором Qt с натяжкой можно назвать moc Улыбающийся, но это не он, эту ошибку выдает компилятор с++.
Записан
kjefes
Гость
« Ответ #3 : Март 13, 2012, 21:53 »

Есть паттерн фабричный метод =) У меня в нем названия классов передаются через параметр, т.е.
Код:
Product *Creator::Create(QString name, QString text)
{
    if(name== "name1") return new name1(text);
    if(name== "name2") return new name2(text);
    if(name== "name3") return new name3(text);
    //...
    if(name== "nameN") return new nameN(text);
    return new Unknown(text);
}

И таких классов штук 15, но общий код в них одинаковый, по сути только имя класса различно; там еще у каждого класса свой номерок есть, поэтому и надо каждый раз создавать новый класс.

Вот и хотел классы name1, name2 как-то объединить по коду
Записан
mutineer
Гость
« Ответ #4 : Март 13, 2012, 21:59 »

Классы ничем не отличаются?О_о а зачем они тогда разные?
Записан
BRE
Гость
« Ответ #5 : Март 13, 2012, 21:59 »

И таких классов штук 15, но общий код в них одинаковый, по сути только имя класса различно; там еще у каждого класса свой номерок есть, поэтому и надо каждый раз создавать новый класс.

Вот и хотел классы name1, name2 как-то объединить по коду
Если они внутри полностью одинаковые, тогда зачем их 15?
Записан
V1KT0P
Гость
« Ответ #6 : Март 13, 2012, 22:03 »

Есть паттерн фабричный метод =) У меня в нем названия классов передаются через параметр, т.е.
Код:
Product *Creator::Create(QString name, QString text)
{
    if(name== "name1") return new name1(text);
    if(name== "name2") return new name2(text);
    if(name== "name3") return new name3(text);
    //...
    if(name== "nameN") return new nameN(text);
    return new Unknown(text);
}

И таких классов штук 15, но общий код в них одинаковый, по сути только имя класса различно; там еще у каждого класса свой номерок есть, поэтому и надо каждый раз создавать новый класс.

Вот и хотел классы name1, name2 как-то объединить по коду
По-моему ты начитался про шаблоны проектирования толком не изучив С++.
Записан
kjefes
Гость
« Ответ #7 : Март 13, 2012, 22:10 »

Каждый такой класс имеет свой уникальный и неповторимый номер ) Если в примере, то можно представить так.
Есть игра, в которой куча человечков, человеки одинаковы тем, что имеют: две ноги, две руки, туловище и голову. А различаются: номером, именем и .. некоторые лысые, другие волосатые. Как то так.. Хотелось чтобы создавался класс Человек1(номер,имя,волосатость), Человек2(номер,имя,волосатость),.. Потом просто эти классы будут взаимодействовать между собой, обращаясь по номеру. И если потребуется изменять только класс Человек1, к примеру добавив еще одну руку и убрав ногу, то так будет проще сделать, просто уже создав отдельно этот класс.
« Последнее редактирование: Март 13, 2012, 22:12 от kjefes » Записан
mutineer
Гость
« Ответ #8 : Март 13, 2012, 22:13 »

Ну так сделай номер свойством и присваивай его в фабрике


Потом просто эти классы будут взаимодействовать между собой, обращаясь по номеру.

это ты как себе представляешь?
Записан
V1KT0P
Гость
« Ответ #9 : Март 13, 2012, 22:18 »

Каждый такой класс имеет свой уникальный и неповторимый номер ) Если в примере, то можно представить так.
Есть игра, в которой куча человечков, человеки одинаковы тем, что имеют: две ноги, две руки, туловище и голову. А различаются: номером, именем и .. некоторые лысые, другие волосатые. Как то так.. Хотелось чтобы создавался класс Человек1(номер,имя,волосатость), Человек2(номер,имя,волосатость),.. Потом просто эти классы будут взаимодействовать между собой, обращаясь по номеру. И если потребуется изменять только класс Человек1, к примеру добавив еще одну руку и убрав ногу, то так будет проще сделать, просто уже создав отдельно этот класс.
Дык это решается одним классом а параметры передаешь через конструктор:
Человек лысыйтолсят(12, Вася, Лысый, Толстый, Тупой);
Записан
kjefes
Гость
« Ответ #10 : Март 13, 2012, 22:28 »

Дык это решается одним классом а параметры передаешь через конструктор:
Человек лысыйтолсят(12, Вася, Лысый, Толстый, Тупой);

Ну так сделай номер свойством и присваивай его в фабрике

А если я захочу, чтобы потом некоторые Человеки имели по три руки? Для этого и надо мне, чтобы у каждого был свой класс. Это сейчас у них есть такой общий код, а потом его скорее всего и не будет.
Записан
kjefes
Гость
« Ответ #11 : Март 13, 2012, 22:31 »

То есть по сути мне нужен каждый раз новый класс для каждого имени.
Записан
mutineer
Гость
« Ответ #12 : Март 13, 2012, 22:33 »

Ну так сделай номер свойством и присваивай его в фабрике

А если я захочу, чтобы потом некоторые Человеки имели по три руки? Для этого и надо мне, чтобы у каждого был свой класс. Это сейчас у них есть такой общий код, а потом его скорее всего и не будет.

В этом самом "потом" шаблон тебе не особо поможет. Впрочем, делай как знаешь, но имхо что-то неправильно

Ну и ты так и не рассказал как объекты смогут взаимодействовать через номер, который есть в имени класса... А это очень интересно
Записан
V1KT0P
Гость
« Ответ #13 : Март 13, 2012, 22:33 »

Дык это решается одним классом а параметры передаешь через конструктор:
Человек лысыйтолсят(12, Вася, Лысый, Толстый, Тупой);

Ну так сделай номер свойством и присваивай его в фабрике

А если я захочу, чтобы потом некоторые Человеки имели по три руки? Для этого и надо мне, чтобы у каждого был свой класс. Это сейчас у них есть такой общий код, а потом его скорее всего и не будет.
Раскрой глаза смысл С++ в том чтобы писать как можно меньше кода и иметь как можно больше общего кода.
Вот объясни мне в чем проблема на лету изменить количество рук в классе? Вот ты хочешь жестко привязать количество рук к классу а если в игре игрок потеряет руку или наоборот мутирует и у него вырастит две новые руки, что ты будешь делать?
У меня такое впечатление что ты полный ноль в программировании ибо не понимаешь самых банальных вещей.
Записан
kjefes
Гость
« Ответ #14 : Март 14, 2012, 06:23 »

В этом самом "потом" шаблон тебе не особо поможет. Впрочем, делай как знаешь, но имхо что-то неправильно
Ну и ты так и не рассказал как объекты смогут взаимодействовать через номер, который есть в имени класса... А это очень интересно
Да в том и дело, что хотел сделать так, придется по другому хранить данные.
Номер не в имени, а просто у каждого класса свой порядковый номер будет, который не повторяется, да и скорость поиска нужного класса по номеру вполне меня устраивает.

Раскрой глаза смысл С++ в том чтобы писать как можно меньше кода и иметь как можно больше общего кода.
Вот объясни мне в чем проблема на лету изменить количество рук в классе? Вот ты хочешь жестко привязать количество рук к классу а если в игре игрок потеряет руку или наоборот мутирует и у него вырастит две новые руки, что ты будешь делать?
У меня такое впечатление что ты полный ноль в программировании ибо не понимаешь самых банальных вещей.
Потерять руку он просто не может =) У класса, да, жестоко вшит метод его отображения. Чтобы у него было три руки он должен быть сразу создан необходимым классом.
Записан
Страниц: [1] 2 3   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.054 секунд. Запросов: 21.