Главная

Первый раз в первый class

Вопрос 1.
В cpp новичок. Сегодня первы раз от руки .h–файл писал :))
Вопрос такой надо ли в примере (см. ниже) описывать
RImg для хранения картинки или можно родительскому классу передать
значение для хранения??
Далее, для чего нужна строчка
:BBitmap(NULL,B_CMAP8)
(я её написал по–анологии с skeleton–app)??
Естественно класс потом будет расширяться (чтобы не подумали, что я
от нечего делать классы описываю).
imguse.h
-----------------------------------------------------------------------------–
#ifndef _imguse_h
#define _imguse_h_
#include
class RBitmap : public BBitmap
{
public:
RBitmap(char *filename);
~RBitmap();
BBitmap *RImg;
};
#endif
-----------------------------------------------------------------------------–
imguse.cpp:
-----------------------------------------------------------------------------–
#include “File.h”
#include “imguse.h”
#include “TranslationKit.h”
RBitmap::RBitmap(char *filename)
:BBitmap(NULL,B_CMAP8)
{
BBitmapStream stream;
BTranslatorRoster *roster = BTranslatorRoster::Default();
BFile file(filename, B_READ_ONLY);
if (roster–>Translate(&file, NULL, NULL, &stream,B_TRANSLATOR_BITMAP) < B_OK)
RImg=NULL;
stream.DetachBitmap(&RImg);
}
-----------------------------------------------------------------------------–
P.S. ответы в виде линков на документацию приветсвуются.

Re: Первый раз в первый class

Непонятно, зачем тебе RImg. По крайней мере из этого текста. Класс, произведенный из BBitmap
так и так наследует от своего базового класса свойство хранить картинки.

>:BBitmap(NULL,B_CMAP8)
эта строчка передает параметры конструктору базового класса.

А вообще в этом форуме плохо на программистские темы рассуждать. Например, он съедает все, что в угловых скобках

Re: Первый раз в первый class

    Например, он съедает все, что в угловых скобках

Это точно. Надо хотя бы им аналог придумать.

PS. А чего с тегами “b” «/b” случилось (и прочими)? Раньше работали. И скобки угловые тоже.

Re: Первый раз в первый class

BBitmap требует, чтобы существовал BApplication (так в BeBook написано и дебагер так говорит). А есть ли класс для хранения картинки, без создания экземпляра BApplication.
(Я пишу консольное приложение, пока).

Re: Первый раз в первый class

>>:BBitmap(NULL,B_CMAP8)
>эта строчка передает параметры конструктору базового класса.

то есть что–то типа inherited в паскале??

Re: Первый раз в первый class

Эх.. не помню я паскаля.
:BBitmap(NULL,B_CMAP8) вызывает конструктор предка с параметрами.

Переменная (атрибут) BBitmap *RImg; в классе RBitmap непонятно из контекста зачем нужен.
Получается ты хранишь экземпляр предка в потомке. Для таких вешей нужна мотивация.
Это что будет smart pointer?

Описание классов весьма полезная вешь. Каркасс абстрактных классов (т.е. просто пустые описания)
в большом приложении штука просто незаменимая.

ЗЫ
Наверно надо начать с чтения книжек. Кажется мы уже дискутировали о пользе чтения в другой ветке.
«Thinking in C++" Брюса Эккеля покроет все твои С++ нужды на первые полгода–год.
Эккель распространяет свои книги в интернете бесплатно.
Искать тут: http://www.mindview.net/
http://www.mindview.net/Books/TICPP/ThinkingInCPP2e.html

Re: Первый раз в первый class

Картинки ты можешь хранить где угодно, массив нужного размера — и все.
Вопрос в том, как ты с ними дальше работать собираешься, будешь ли использовать удобства конвертации, отрисовки на экран, мастштабирования и т д, предоставляемые классоми BBitmap/BView или собираешься использользовать сторонние библиотеки, или изобретать велосипед с нуля.

А BApplication и консольность друг–другу не помеха. До тех пор пока ты не собираешься ничего выводить на экран, тебе BWindow не нужен.
BBitmap позволяет присоединять к себе BView точно так же как BWindow и использовать функции рисования класса BView на этом битмапе.

Re: Первый раз в первый class

Спасибо за ссылочки

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Allowed HTML tags: <a> <em> <i> <img> <strong> <b> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Строки и параграфы переносятся автоматически.

Подробнее о форматировании

CAPTCHA
Введите перечисленные символы, чтобы мы убедились, что вы не робот. Не требуется для зарегистрированных пользователей.
d
d
e
h
s
g
Enter the code without spaces and pay attention to upper/lower case.