Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.04.2012, 14:17   #1
ScrappyCoco
 
Аватар для ScrappyCoco
 
Регистрация: 26.01.2012
Сообщений: 3
Восклицание Создание базового класса

Здравствуйте, решил поделиться с вами своей маленькой проблемкой в виде создания базового класса.
Необходимо создать базовый класс, который будет содержать в себе информацию об экземплярах класса,такую как: шрифт экземпляра, его состояние(мигает/горит/потухший),его координаты в будущем массиве(коллекции).И стоит ли принимать за метод класса,например,мигание экземпляра?Вопрос о переменных тоже стоит ребром =\

Проблема состоит в том,что алгоритм примерно ясен,но вот с переводом на машинный язык у меня конкретные проблемы
Если кто-нибудь сможет примерно хотя бы объяснить,с чего лучше начать,буду премного благодарен,ну а если же еще и кусочек кода будет,то моему признанию не будет границ.
ScrappyCoco вне форума Ответить с цитированием
Старый 24.04.2012, 15:29   #2
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

Цитата:
Сообщение от ScrappyCoco Посмотреть сообщение
но вот с переводом на машинный язык у меня конкретные проблемы
Не пишите на машинном языке! Воспользуйтесь C++

А если серьезно, я не понял в чем проблема. Вы не знаете как объявить класс?
Код:
class MyBaseClass
{
};
Если это должен быть интерфейс, свойств у него быть не должно.
Скорее всего он должен быть не копируемый, и иметь виртуальный деструктор.
Забираем отсюда http://www.boost.org/doc/libs/1_49_0...oncopyable.hpp класс noncopyable
Код:
class MyBaseClass: private noncopyable
{
};
Далее добавляем в класс несколько виртуальных методов. Методы должны быть такими, которые будут иметь смысл для ВСЕХ наследников этого класса
Код:
class MyBaseClass: private noncopyable
{
public:
  virtual void Func() = 0;
  virtual std::string Func2(const std::string& str) = 0;
  virtual double Func3(double x, double y) = 0;
};
Далее описываем наследников этого класса, и реализуем виртуальные методы
Код:
class MyChildClass1: public MyBaseClass
{
public:
  MyChildClass1()
  {
    ...
  }

  virtual void Func()
  {
    ...
  }

  virtual std::string Func2(const std::string& str)
  {
    ...
  }

  virtual double Func3(double x, double y)
  {
    ...
  }

private:
  double _x;
  double _y;
  std::string _str;  
};
Далее можно сделать фабрику:
Код:
std::auto_ptr<MyBaseClass> GetMyBaseClass()
{
  return std::auto_ptr<MyBaseClass>(new MyChildClass1);
}
Если нужно передать аргументы в конструктор MyChildClass1 - передайте их в фабрику, и там используйте.
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Старый 24.04.2012, 15:43   #3
ScrappyCoco
 
Аватар для ScrappyCoco
 
Регистрация: 26.01.2012
Сообщений: 3
По умолчанию

Возможно, я был не совсем точен в своем изложении.
Да,этот класс будет одной из частей GUI.
А можно увидеть это все на едином примере,а то,боюсь, моих знаний не хватит, чтобы объединить\дополнить ваши строки кода в единую картину?Если вас не затруднит,конечно.
Также очень волнует ситуация со свойствами экземпляров класса,а конкретнее-со шрифтами и миганием,которое у меня получилось пока реализовать только со стрингом через эскейп-последовательности.
ScrappyCoco вне форума Ответить с цитированием
Старый 24.04.2012, 15:51   #4
Krok27
Форумчанин
 
Аватар для Krok27
 
Регистрация: 08.07.2010
Сообщений: 505
По умолчанию

Blade Вам все рассказал. Потрудитесь добавить нужные protected свойства для доступа из наследников или в каждом из наследников объявите их private. Так же объявите методы доступа к этим свойствам. А еще лучше сначала почитайте соответствующую литературу про ООП.
Знающий не говорит, говорящий не знает (С) Лао Цзы
Krok27 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Инициализация переменных базового класса в дочернем классе t2skler Общие вопросы C/C++ 5 18.07.2022 20:53
Функция базового класса вызывает критическую ошибку при вызове для класса-потомка Archet Общие вопросы C/C++ 7 17.01.2012 20:17
Как обратиться к полям базового класса? Azartov Общие вопросы C/C++ 13 03.07.2011 20:32
Ошибка при присвоении объекту производного класса объекта базового класса с исп. явного приведения типов Lanx Помощь студентам 0 06.04.2011 20:24
Создание своего класса на основе базового TControl Lich87 Общие вопросы C/C++ 1 22.06.2010 18:29