Russian Qt Forum

Qt => Вопросы новичков => Тема начата: ruzik от Февраль 11, 2011, 15:46



Название: Наследование
Отправлено: ruzik от Февраль 11, 2011, 15:46
Здравствуйте, скажи пожалуйста, что я делаю не правильно
Надо сделать новый класс из QLineEdit

Код:
#include "QLineEdit"

class RLineEdit: public QLineEdit
{
Q_OBJECT

public:
RLineEdit(QWidget *parent = 0);
~RLineEdit();
};

RLineEdit::RLineEdit(QWidget *parent )
{
this->setStyleSheet("QLineEdit { border-radius: 5px; padding: 2px 2px; border: 1px groove gray;}");
};
RLineEdit::~RLineEdit()
{

};
Мне выводит 25 ошибок, вот главные из них

Ошибка   1   error C2011: RizekLineEdit: переопределение типа "class"   c:\documents and settings\rustam\мои документы\visual studio 2008\projects\mybr\mybr\RFoundationClasses\RLineEdit.h   3
Ошибка   2   error C2027: использование неопределенного типа "RizekLineEdit"   c:\documents and settings\rustam\мои документы\visual studio 2008\projects\mybr\mybr\RFoundationClasses\RLineEdit.h   12


Название: Re: Наследование
Отправлено: ilyagoo от Февраль 11, 2011, 16:05
#include <QLineEdit> - так лучше смотрится))
нафига ";" после тела функции?
нафига вызов метода предка через this?

а это вообще где RizekLineEdit?


Название: Re: Наследование
Отправлено: GreatSnake от Февраль 11, 2011, 16:51
Забыл вызвать конструктор базового класса
Код
C++ (Qt)
RLineEdit::RLineEdit(QWidget *parent )
: QLineEdit( parent )
{
   ...
}

И где код RLineEdit.h?


Название: Re: Наследование
Отправлено: ruzik от Февраль 11, 2011, 17:12
Это и есть код RLineEdit.h, а точнее RizekLineEdit.h просто немножко подсократил название перед тем как выкладывать на форум, что бы читать стало легче
Добавил конструктор базового класса, теперь ошибок 28))
Код:
#include "QLineEdit"

class RizekLineEdit: public QLineEdit
{
Q_OBJECT

public:
RizekLineEdit(QWidget *parent = 0);
~RizekLineEdit();
};

RizekLineEdit::RizekLineEdit(QWidget *parent )
:QLineEdit(parent)
{
this->setStyleSheet("QLineEdit { border-radius: 5px; padding: 2px 2px; border: 1px groove gray;}");
}
RizekLineEdit::~RizekLineEdit()
{

}
А ; после функции можно ставить, хуже не станет, это просто стиль программирования


Название: Re: Наследование
Отправлено: GreatSnake от Февраль 11, 2011, 17:17
Похоже компилятор не находит Qt-шных инклюдов.


Название: Re: Наследование
Отправлено: Пантер от Февраль 11, 2011, 17:23
ruzik, пользуйся тегом code для оформления постов.


Название: Re: Наследование
Отправлено: ruzik от Февраль 11, 2011, 17:27
ruzik, пользуйся тегом code для оформления постов.
Исправил


Название: Re: Наследование
Отправлено: serg_hd от Февраль 11, 2011, 17:54
Забыл вызвать конструктор базового класса
Код
C++ (Qt)
RLineEdit::RLineEdit(QWidget *parent )
: QLineEdit( parent )
{
   ...
}
Зачем?) Это важно только если при создании объекта RLineEdit, он в него передаст предка, по умолчанию у виджета он равен 0. Хотя в твоём варианте его передавать надо обязательно.


Название: Re: Наследование
Отправлено: GreatSnake от Февраль 11, 2011, 18:00
Цитировать
Зачем?) Это важно только если при создании объекта RLineEdit, он в него передаст предка.
Интересно, кто-то реально в реальных проектах создаёт контролы без предков?
А если укажет предка, то каким образом про него узнает базовый класс?

Цитировать
Хотя в твоём варианте его передавать надо обязательно.
Вовсе нет - смотри описание конструктора.



Название: Re: Наследование
Отправлено: serg_hd от Февраль 11, 2011, 18:03
Под описанием имеется ввиду
Код
C++ (Qt)
RLineEdit::RLineEdit(QWidget *parent )
 
? Если да, то не вижу тут ничего похожего на
Код
C++ (Qt)
RLineEdit::RLineEdit(QWidget *parent = 0)
 


Название: Re: Наследование
Отправлено: GreatSnake от Февраль 11, 2011, 18:06
Вы ссылаетесь на имплементацию, где дефолтные значения непозволительны, а вот описание:
Код
C++ (Qt)
class RizekLineEdit: public QLineEdit
{
Q_OBJECT
 
public:
RizekLineEdit(QWidget *parent = 0);
~RizekLineEdit();
};
 

Перед тем как вступать в полемику не мешало бы повнимательнее просмотреть тему)


Название: Re: Наследование
Отправлено: Fat-Zer от Февраль 11, 2011, 18:07
Это и есть код RLineEdit.h, а точнее RizekLineEdit.h просто немножко подсократил название перед тем как выкладывать
методы, надеюсь, определены всё же в cpp файле? И хорошо бы увидеть полный список ошибок под каким-нить спойлеров.


Название: Re: Наследование
Отправлено: serg_hd от Февраль 11, 2011, 18:08
Интересно, кто-то реально в реальных проектах создаёт контролы без предков?
Да, потому что addWidget() никто не отменял. В чём подвох?

А если укажет предка, то каким образом про него узнает базовый класс?
не понял вопроса

Вы ссылаетесь на имплементацию, где дефолтные значения непозволительны, а вот описание:
Код
C++ (Qt)
class RizekLineEdit: public QLineEdit
{
Q_OBJECT
 
public:
RizekLineEdit(QWidget *parent = 0);
~RizekLineEdit();
};
 

Перед тем как вступать в полемику не мешало бы повнимательнее просмотреть тему)

Я ссылаюсь не на имплементацию, а на конкретный пост #3. Это тоже имплементация?)


Название: Re: Наследование
Отправлено: GreatSnake от Февраль 11, 2011, 18:15
Цитировать
Я ссылаюсь не на имплементацию, а на конкретный пост #3. Это тоже имплементация?)
Конечно. Чего-то я не понимаю ваших непоняток.


Название: Re: Наследование
Отправлено: serg_hd от Февраль 11, 2011, 18:18
Я имею ввиду чем по-вашему плох способ:
Код
C++ (Qt)
QLineEdit* le = new QLineEdit;
myWidget->addWidget(le);
 
? Предка не указал


Название: Re: Наследование
Отправлено: GreatSnake от Февраль 11, 2011, 18:30
Цитировать
Я имею ввиду чем по-вашему плох способ:
Плох тем, что в Qt нет QWidget::addWidget()  :)
А вот QLayout::addWidget() есть.
Но, бывают случаи, когда лейаута может и не быть.
С остальном способ не плох, но мне, имхо, не нравится.


Название: Re: Наследование
Отправлено: serg_hd от Февраль 11, 2011, 18:32
конечно я имел ввиду лайауты


Название: Re: Наследование
Отправлено: ruzik от Февраль 11, 2011, 18:33
А зачем расписывать функции класса в отдельном cpp файле, я хочу все расписать в заголовочном и просто его подключить, к основному проекту


Название: Re: Наследование
Отправлено: GreatSnake от Февраль 11, 2011, 18:39
Цитировать
А зачем расписывать функции класса в отдельном cpp файле, я хочу все расписать в заголовочном и просто его подключить, к основному проекту
Дело в том, что инлкюды обычно меняются не так часто, как сами исходники.
И если этот класс используется во многих исходниках, то при каждом изменении этого инклюда, будут перекомпиляться эти исходники.
Ну и считается, что имплиментацию лучше спрятать от других.


Название: Re: Наследование
Отправлено: Fat-Zer от Февраль 11, 2011, 18:43
А зачем расписывать функции класса в отдельном cpp файле, я хочу все расписать в заголовочном и просто его подключить, к основному проекту
потому что тогда определения попадут во все cpp файлы в которые включается этот хедер и будет 28 ошибок.
Если не хотите реализацию писать в отдельном файле, то нужно сделать их встроинными:
Код
C++ (Qt)
#include <QLineEdit>
 
class RLineEdit: public QLineEdit
{
       Q_OBJECT
 
public:
       RLineEdit(QWidget *parent = 0);
       { this->setStyleSheet("QLineEdit { border-radius: 5px; padding: 2px 2px; border: 1px groove gray;}"); };
       ~RLineEdit(){};
};
 
не люблю себя цитировать, но:
И хорошо бы увидеть полный список ошибок под каким-нить спойлеров.


Название: Re: Наследование
Отправлено: serg_hd от Февраль 11, 2011, 18:45
Цитировать
А зачем расписывать функции класса в отдельном cpp файле, я хочу все расписать в заголовочном и просто его подключить, к основному проекту
Дело в том, что инлкюды обычно меняются не так часто, как сами исходники.
Угу, поэтому и рекомендуется в .h-файлах прописывать:
Код
C++ (Qt)
class MyClass;
 

вместо:
Код
C++ (Qt)
#include <MyClass.h> //это будет в .cpp
 

иначе изменение MyClass повлекло бы за собой перекомпил класса, который относится к .h


Название: Re: Наследование
Отправлено: GreatSnake от Февраль 11, 2011, 18:50
Цитировать
Интересует именно: как при этом можно будет создать объект без передачи предка. Т.к. я привык к:
Вы чего-то недогоняете( Посмотрите первое сообщение. Там есть описание конструктора с дефолтным предком. Что непенятно-то? :o

Цитировать
Поэтому и рекомендуется в .h-файлах прописывать:
Ну и? Про это разве кто-то спрашивал?


Название: Re: Наследование
Отправлено: serg_hd от Февраль 11, 2011, 18:51
Цитировать
Поэтому и рекомендуется в .h-файлах прописывать:
Ну и? Про это разве кто-то спрашивал?
Нет, это просто совет ruzik'у. А я разве где-то что-то опроверг?


Название: Re: Наследование
Отправлено: GreatSnake от Февраль 11, 2011, 18:56
Цитировать
А я разве где-то что-то опроверг?
Нет, просто это было подано как-то странно.


Название: Re: Наследование
Отправлено: serg_hd от Февраль 11, 2011, 19:12
Насчёт
Код
C++ (Qt)
RLineEdit::RLineEdit(QWidget *parent )
: QLineEdit( parent )
{
   ...
}
вобщем-то эта инициализация методов и должна была лежать в .cpp, сбило с толку). Я почему-то принял этот код за декларацию. Наверное из-за непривычки что в одном файле и (!)раздельно. Обычно если класс полностью в .h, так хоть не разделяют, ппц


Название: Re: Наследование
Отправлено: ruzik от Февраль 11, 2011, 19:43
А не подскажите как правильно расписать все подключения и тп в cpp и h файлах, и вообще это надо, я говорю про всякие
#ifndef RLINEEDIT_H
#define RLINEEDIT_H
.....
#endif
В h файле
И вообще как компилятор определяет cpp файл, со всеми описаниями если он нигде не подключается(во всяком случае в виде inclide)


Название: Re: Наследование
Отправлено: Fat-Zer от Февраль 11, 2011, 19:56
порядок компиляции вкратце:
0) компилятор ничего не знает о хедарах
1) препроцессор вместо всех директив подставляет то что должен (втч раскрывает все инклюды).
2) Компилятор компилирует каждый cpp файл по отдельности. в этот момент могут быть некоторые функции/константы/переменные, которые объявлены, но не определены. на выходе получаем объектные файлы.
3) Линкер берёт все объектные файлы и компанует их в один исполняемый/библиотеку/что там ещё?.

как правильно подключать хедеры:
1) Если возможно, то в хедере лучше ограничиваться опережающими определениями, а все хедеры подключать в .cpp
2) Это не возможно для: класса предка, классов-членов(не указателей)
3) В "скобки" ifndef/define/endif нужна заключать !всё! тело хедера. Важно чтобы параметр был единственный во всём проекте.

что ещё важно понимать:
препроцессор в С++ с инклюд работает на редкость тупо(т.е. в KISS-стиле): он просто убирает инклюд и ставит на его место то, что увидел в файле, который ему скормили. и ни каких примудростей в этом нет.


Название: Re: Наследование
Отправлено: serg_hd от Февраль 11, 2011, 20:25
Кстати ещё классический пример "надобности" разделения на .h и .cpp - написание библиотек. Её пользователям предоставляете интерфейс без деталей реализации.


Название: Re: Наследование
Отправлено: ruzik от Февраль 11, 2011, 20:29
Расписал, все по cpp и h, и стало всего 2 ошибки, что уже радует))
RizekLineEdit.h
Код:
#ifndef RIZEKLINEEDIT_H
#define RIZEKLINEEDIT_H

#include "QLineEdit"

class RizekLineEdit: public QLineEdit
{
Q_OBJECT

public:
RizekLineEdit(QWidget *parent = 0);
~RizekLineEdit();
};

#endif
RizekLineEdit.cpp
Код:
#include "RizekLineEdit.h";

RizekLineEdit::RizekLineEdit(QWidget *parent )
:QLineEdit(parent)
{
this->setStyleSheet("QLineEdit { border-radius: 5px; padding: 2px 2px; border: 1px groove gray;}");
}
RizekLineEdit::~RizekLineEdit()
{

}


Название: Re: Наследование
Отправлено: serg_hd от Февраль 11, 2011, 20:40
У меня скомпилилось без проблем, 1 предупреждение правда. Тут
Код
C++ (Qt)
#include "RizekLineEdit.h";
 
в конце точка с запятой лишнее


Название: Re: Наследование
Отправлено: ruzik от Февраль 11, 2011, 20:43
Нет вы не правы, это как и ; после функции, это лишь стиль программирования, это можно делать а можно и нет, попробуйте поставьте, лично у меня VS никак не реагирует


Название: Re: Наследование
Отправлено: serg_hd от Февраль 11, 2011, 20:46
Причём здесь "не прав"? Это вобщем-то компилятор мне сказал)) У меня gcc, мелкософтовский компилер презираю и не скрываю этого.


Название: Re: Наследование
Отправлено: SimpleSunny от Февраль 11, 2011, 21:04
То что компилируется не означает, что это правильно.

По поводу ; после тела функций можете почитать в этой теме http://www.rsdn.ru/forum/cpp/350584.all.aspx


Название: Re: Наследование
Отправлено: Fat-Zer от Февраль 11, 2011, 21:05
и ещё для стандартных хедеров приняты угловые скобки: #include <QLineEdit>


Название: Re: Наследование
Отправлено: BRE от Февраль 11, 2011, 21:19
и ещё для стандартных хедеров приняты угловые скобки: #include <QLineEdit>
Скорее не просто потому что так принято, а из-за разного порядка поиска файлов при использовании "..."|<...>.


Название: Re: Наследование
Отправлено: serg_hd от Февраль 11, 2011, 21:20
и ещё для стандартных хедеров приняты угловые скобки: #include <QLineEdit>
насколько знаю, такие использовать принято для "внешних" библиотек. Для своих файлов проекта - " ". Как уже отметил BRE из-за разного поиска.

То что компилируется не означает, что это правильно.
Никто и не говорит обратного. Но для данного примера и компилятора это правильно.


Название: Re: Наследование
Отправлено: SimpleSunny от Февраль 11, 2011, 21:34
Никто и не говорит обратного.
Как никто, если
Нет вы не правы, это как и ; после функции, это лишь стиль программирования, это можно делать а можно и нет, попробуйте поставьте, лично у меня VS никак не реагирует

Но для данного примера и компилятора это правильно.
Есть стандарт на С++. При беглом просмотре 16 главы (интересно стало) не нашел упоминания  про ;, а только формы:
Код
C++ (Qt)
# include "q-char-sequence" new-line
# include <h-char-sequence> new-line

ИМХО лучше не писать код не соответствующий стандарту, если это не критично.


Название: Re: Наследование
Отправлено: serg_hd от Февраль 11, 2011, 21:56
Никто и не говорит обратного.
Как никто, если
Нет вы не правы, это как и ; после функции, это лишь стиль программирования, это можно делать а можно и нет, попробуйте поставьте, лично у меня VS никак не реагирует
Я подумал ваш ответ был на мой пост, а не на пост ruzik'a. Конечно, мелкософт давно славится своим "соблюдением стандартов", тут без комментариев. И поэтому если gcc/g++ молчат с учётом соответствующих флагов компиляции, то это облагораживает :)


Название: Re: Наследование
Отправлено: ruzik от Февраль 11, 2011, 22:30
Забыл вставить ошибки, которые выдает, вот:

Ошибка   1   error C2084: функция "RizekLineEdit::RizekLineEdit(QWidget *)" уже имеет текст реализации   c:\Documents and Settings\rustam\Мои документы\Visual Studio 2008\Projects\MyBr\MyBr\RizekFoundationClasses\RizekLineEdit\RizekLineEdit.cpp   4
Ошибка   2   error C2084: функция "RizekLineEdit::~RizekLineEdit(void)" уже имеет текст реализации   c:\Documents and Settings\rustam\Мои документы\Visual Studio 2008\Projects\MyBr\MyBr\RizekFoundationClasses\RizekLineEdit\RizekLineEdit.cpp   9


Название: Re: Наследование
Отправлено: brankovic от Февраль 11, 2011, 23:51
Забыл вставить ошибки, которые выдает, вот:

Ошибка   1   error C2084: функция "RizekLineEdit::RizekLineEdit(QWidget *)" уже имеет текст реализации   c:\Documents and Settings\rustam\Мои документы\Visual Studio 2008\Projects\MyBr\MyBr\RizekFoundationClasses\RizekLineEdit\RizekLineEdit.cpp   4
Ошибка   2   error C2084: функция "RizekLineEdit::~RizekLineEdit(void)" уже имеет текст реализации   c:\Documents and Settings\rustam\Мои документы\Visual Studio 2008\Projects\MyBr\MyBr\RizekFoundationClasses\RizekLineEdit\RizekLineEdit.cpp   9


Посмотрите внимательно, скорее всего у вас реализация методов и в теле класса и в RizekLineEdit.cpp.

То что тут пишут про .h и .cpp файлы это опять же только пример стиля программирования. Например, можно вообще всё в одном .cpp написать без заголовков, или полностью библиотеку пометить в .h файл.


Название: Re: Наследование
Отправлено: ruzik от Февраль 12, 2011, 00:20
brankovic посмотрите чуть выше, я код залил, описание функций только в cpp, а в h только объявление


Название: Re: Наследование
Отправлено: brankovic от Февраль 12, 2011, 01:05
brankovic посмотрите чуть выше, я код залил, описание функций только в cpp, а в h только объявление

Да, я видел, код правильный. Подумал, что опять для форума что-то сократили неудачно. Вы компилируете из студии, может какой-то глюк, например файл дважды добавлен в проект или кусок класса где-то от копи-пейста остался?

Одним словом, я ошибок не вижу (кроме include+; и "" вместо <>). Попробуйте вынести свой же (опубликованный) пример в новый проект и всё должно собраться.


Название: Re: Наследование
Отправлено: ruzik от Февраль 12, 2011, 11:50
Нет стало только хуже, теперь 34 ошибки, вот они
Ошибка   1   error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "qt_meta_data_RizekLineEdit"   c:\Documents and Settings\rustam\Мои документы\Visual Studio 2008\Projects\MyBr\MyBr\GeneratedFiles\Debug\moc_RizekLineEdit.cpp   20
Ошибка   2   error C2377: uint: переопределение; typedef нельзя перегрузить другим символом   c:\Documents and Settings\rustam\Мои документы\Visual Studio 2008\Projects\MyBr\MyBr\GeneratedFiles\Debug\moc_RizekLineEdit.cpp   20
Ошибка   3   error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию   c:\Documents and Settings\rustam\Мои документы\Visual Studio 2008\Projects\MyBr\MyBr\GeneratedFiles\Debug\moc_RizekLineEdit.cpp   20
Ошибка   4   error C2440: инициализация: невозможно преобразовать 'int [15]' в 'const uint *'   c:\Documents and Settings\rustam\Мои документы\Visual Studio 2008\Projects\MyBr\MyBr\GeneratedFiles\Debug\moc_RizekLineEdit.cpp   42
Ошибка   5   error C2084: функция "RizekLineEdit::RizekLineEdit(QWidget *)" уже имеет текст реализации   c:\Documents and Settings\rustam\Мои документы\Visual Studio 2008\Projects\MyBr\MyBr\RizekFoundationClasses\RizekLineEdit\RizekLineEdit.cpp   4
Ошибка   6   error C2084: функция "RizekLineEdit::~RizekLineEdit(void)" уже имеет текст реализации   c:\Documents and Settings\rustam\Мои документы\Visual Studio 2008\Projects\MyBr\MyBr\RizekFoundationClasses\RizekLineEdit\RizekLineEdit.cpp   9
Ошибка   7   error C2011: RizekLineEdit: переопределение типа "class"   c:\documents and settings\rustam\мои документы\visual studio 2008\projects\mybr\mybr\RizekFoundationClasses\RizekLineEdit\RizekLineEdit.h   3
Ошибка   8   error C2027: использование неопределенного типа "RizekLineEdit"   c:\documents and settings\rustam\мои документы\visual studio 2008\projects\mybr\mybr\RizekFoundationClasses\RizekLineEdit\RizekLineEdit.h   11
Ошибка   9   error C2143: синтаксическая ошибка: отсутствие ")" перед "*"   c:\documents and settings\rustam\мои документы\visual studio 2008\projects\mybr\mybr\RizekFoundationClasses\RizekLineEdit\RizekLineEdit.h   11
Ошибка   10   error C2143: синтаксическая ошибка: отсутствие ";" перед "*"   c:\documents and settings\rustam\мои документы\visual studio 2008\projects\mybr\mybr\RizekFoundationClasses\RizekLineEdit\RizekLineEdit.h   11
Ошибка   11   error C2079: "QWidget" использует неопределенный class "RizekLineEdit"   c:\documents and settings\rustam\мои документы\visual studio 2008\projects\mybr\mybr\RizekFoundationClasses\RizekLineEdit\RizekLineEdit.h   11
Ошибка   12   error C2059: синтаксическая ошибка: )   c:\documents and settings\rustam\мои документы\visual studio 2008\projects\mybr\mybr\RizekFoundationClasses\RizekLineEdit\RizekLineEdit.h   11
Ошибка   13   error C2470: parent: выглядит как определение функции, но без списка параметров; пропускается вероятное тело функции   c:\documents and settings\rustam\мои документы\visual studio 2008\projects\mybr\mybr\RizekFoundationClasses\RizekLineEdit\RizekLineEdit.h   12
Ошибка   14   error C2065: parent: необъявленный идентификатор   c:\documents and settings\rustam\мои документы\visual studio 2008\projects\mybr\mybr\RizekFoundationClasses\RizekLineEdit\RizekLineEdit.h   12
Ошибка   15   error C2027: использование неопределенного типа "RizekLineEdit"   c:\documents and settings\rustam\мои документы\visual studio 2008\projects\mybr\mybr\RizekFoundationClasses\RizekLineEdit\RizekLineEdit.h   16
Ошибка   16   error C2059: синтаксическая ошибка: )   c:\documents and settings\rustam\мои документы\visual studio 2008\projects\mybr\mybr\RizekFoundationClasses\RizekLineEdit\RizekLineEdit.h   16
Ошибка   17   error C2143: синтаксическая ошибка: отсутствие ";" перед "{"   c:\documents and settings\rustam\мои документы\visual studio 2008\projects\mybr\mybr\RizekFoundationClasses\RizekLineEdit\RizekLineEdit.h   17
Ошибка   18   error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа)   c:\documents and settings\rustam\мои документы\visual studio 2008\projects\mybr\mybr\RizekFoundationClasses\RizekLineEdit\RizekLineEdit.h   17
Ошибка   19   error C3867: QObject::parent: в вызове функции отсутствует список аргументов; используйте "&QObject::parent" для создания указателя на член   c:\Documents and Settings\rustam\Мои документы\Visual Studio 2008\Projects\MyBr\MyBr\mybr.cpp   6
Ошибка   20   error C2297: *: недопустимо, правый оператор имеет тип "QObject *(__thiscall QObject::* )(void) const"   c:\Documents and Settings\rustam\Мои документы\Visual Studio 2008\Projects\MyBr\MyBr\mybr.cpp   6
Ошибка   21   error C2275: Qt::WFlags: недопустимое использование этого типа в качестве выражения   c:\Documents and Settings\rustam\Мои документы\Visual Studio 2008\Projects\MyBr\MyBr\mybr.cpp   6
Ошибка   22   error C2146: синтаксическая ошибка: отсутствие ")" перед идентификатором "flags"   c:\Documents and Settings\rustam\Мои документы\Visual Studio 2008\Projects\MyBr\MyBr\mybr.cpp   6
Ошибка   23   error C2761: {ctor}: повторное объявление функции не разрешается   c:\Documents and Settings\rustam\Мои документы\Visual Studio 2008\Projects\MyBr\MyBr\mybr.cpp   6
Ошибка   24   error C2059: синтаксическая ошибка: )   c:\Documents and Settings\rustam\Мои документы\Visual Studio 2008\Projects\MyBr\MyBr\mybr.cpp   6
Ошибка   25   error C2143: синтаксическая ошибка: отсутствие ")" перед ","   c:\Documents and Settings\rustam\Мои документы\Visual Studio 2008\Projects\MyBr\MyBr\mybr.cpp   7
Ошибка   26   error C2550: void __cdecl `dynamic initializer for 'parent''(void): список инициализации конструктора должен использоваться только в месте определения конструктора   c:\Documents and Settings\rustam\Мои документы\Visual Studio 2008\Projects\MyBr\MyBr\mybr.cpp   7
Ошибка   27   error C2059: синтаксическая ошибка: )   c:\Documents and Settings\rustam\Мои документы\Visual Studio 2008\Projects\MyBr\MyBr\mybr.cpp   7
Ошибка   28   error C2550: void __cdecl `dynamic initializer for 'flags''(void): список инициализации конструктора должен использоваться только в месте определения конструктора   c:\Documents and Settings\rustam\Мои документы\Visual Studio 2008\Projects\MyBr\MyBr\mybr.cpp   8
Ошибка   29   error C2143: синтаксическая ошибка: отсутствие ";" перед "{"   c:\Documents and Settings\rustam\Мои документы\Visual Studio 2008\Projects\MyBr\MyBr\mybr.cpp   8
Ошибка   30   error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа)   c:\Documents and Settings\rustam\Мои документы\Visual Studio 2008\Projects\MyBr\MyBr\mybr.cpp   8
Ошибка   31   error C2027: использование неопределенного типа "RizekLineEdit"   c:\Documents and Settings\rustam\Мои документы\Visual Studio 2008\Projects\MyBr\MyBr\mybr.cpp   66
Ошибка   32   error C2227: выражение слева от "->text" должно указывать на тип класса, структуры или объединения либо на универсальный тип   c:\Documents and Settings\rustam\Мои документы\Visual Studio 2008\Projects\MyBr\MyBr\mybr.cpp   66
Ошибка   33   error C2027: использование неопределенного типа "RizekLineEdit"   c:\Documents and Settings\rustam\Мои документы\Visual Studio 2008\Projects\MyBr\MyBr\mybr.cpp   73
Ошибка   34   error C2227: выражение слева от "->setFixedWidth" должно указывать на тип класса, структуры или объединения либо на универсальный тип   c:\Documents and Settings\rustam\Мои документы\Visual Studio 2008\Projects\MyBr\MyBr\mybr.cpp   73
А в основных cpp и h, я подключаю только h, то есть:
#include "RizekFoundationClasses/RizekLineEdit/RizekLineEdit.h"
P.S. извините что не под спойлером, не нашел кнопку спойлера