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

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

Страниц: 1 2 [3]   Вниз
  Печать  
Автор Тема: Наследование  (Прочитано 31453 раз)
ruzik
Гость
« Ответ #30 : Февраль 11, 2011, 20:43 »

Нет вы не правы, это как и ; после функции, это лишь стиль программирования, это можно делать а можно и нет, попробуйте поставьте, лично у меня VS никак не реагирует
Записан
serg_hd
Хакер
*****
Offline Offline

Сообщений: 668



Просмотр профиля
« Ответ #31 : Февраль 11, 2011, 20:46 »

Причём здесь "не прав"? Это вобщем-то компилятор мне сказал)) У меня gcc, мелкософтовский компилер презираю и не скрываю этого.
Записан

kubuntu/Win7/x64/NetBeans
SimpleSunny
Гость
« Ответ #32 : Февраль 11, 2011, 21:04 »

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

По поводу ; после тела функций можете почитать в этой теме http://www.rsdn.ru/forum/cpp/350584.all.aspx
Записан
Fat-Zer
Гость
« Ответ #33 : Февраль 11, 2011, 21:05 »

и ещё для стандартных хедеров приняты угловые скобки: #include <QLineEdit>
Записан
BRE
Гость
« Ответ #34 : Февраль 11, 2011, 21:19 »

и ещё для стандартных хедеров приняты угловые скобки: #include <QLineEdit>
Скорее не просто потому что так принято, а из-за разного порядка поиска файлов при использовании "..."|<...>.
Записан
serg_hd
Хакер
*****
Offline Offline

Сообщений: 668



Просмотр профиля
« Ответ #35 : Февраль 11, 2011, 21:20 »

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

То что компилируется не означает, что это правильно.
Никто и не говорит обратного. Но для данного примера и компилятора это правильно.
« Последнее редактирование: Февраль 11, 2011, 21:22 от serg_hd » Записан

kubuntu/Win7/x64/NetBeans
SimpleSunny
Гость
« Ответ #36 : Февраль 11, 2011, 21:34 »

Никто и не говорит обратного.
Как никто, если
Нет вы не правы, это как и ; после функции, это лишь стиль программирования, это можно делать а можно и нет, попробуйте поставьте, лично у меня VS никак не реагирует

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

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

Сообщений: 668



Просмотр профиля
« Ответ #37 : Февраль 11, 2011, 21:56 »

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

kubuntu/Win7/x64/NetBeans
ruzik
Гость
« Ответ #38 : Февраль 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
Записан
brankovic
Гость
« Ответ #39 : Февраль 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 файл.
Записан
ruzik
Гость
« Ответ #40 : Февраль 12, 2011, 00:20 »

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

brankovic посмотрите чуть выше, я код залил, описание функций только в cpp, а в h только объявление

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

Одним словом, я ошибок не вижу (кроме include+; и "" вместо <>). Попробуйте вынести свой же (опубликованный) пример в новый проект и всё должно собраться.
Записан
ruzik
Гость
« Ответ #42 : Февраль 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. извините что не под спойлером, не нашел кнопку спойлера
Записан
Страниц: 1 2 [3]   Вверх
  Печать  
 
Перейти в:  


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