crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Не собирается программа
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Алексей1153 Дата 26.3.2012, 19:05
  гость, пустое, не стоит так разоряться )))

if(bool_variable == true) - это нормальная запись. Я бы даже сказал - правильная, без синтаксического сахара.

Цитата
bool - это синтетический тип на самом деле это int

а это вообще ложь. bool - это самостоятельный тип (размер, между прочим, 1 байт, а у int - обычно 4) .
Гость_FantasyOR_* Дата 26.3.2012, 16:55
 
Раскрывающийся текст

{
    QString str = ui->lineEditTest->text();
    //QString str = "строка на русском"; //если убрать этот коммент, то функция нормально переведет эту строку
    QString result = "";
    QHash<QChar,QString> trHash;
    trHash.insert('а',"a");    trHash.insert('б',"b");
    trHash.insert('в',"v");    trHash.insert('г',"g");
    trHash.insert('д',"d");    trHash.insert('е',"ye");
    trHash.insert('ё',"yo");    trHash.insert('ж',"zh");
    trHash.insert('з',"z");    trHash.insert('и',"i");
    trHash.insert('й',"y");    trHash.insert('к',"k");
    trHash.insert('л',"l");    trHash.insert('м',"m");
    trHash.insert('н',"n");    trHash.insert('о',"o");
    trHash.insert('п',"p");    trHash.insert('р',"r");
    trHash.insert('с',"s");    trHash.insert('т',"t");
    trHash.insert('у',"u");    trHash.insert('ф',"f");
    trHash.insert('х',"kh");    trHash.insert('ц',"c");
    trHash.insert('ч',"ch");    trHash.insert('ш',"sh");
    trHash.insert('щ',"sch");    trHash.insert('ъ',"");
    trHash.insert('ы',"y");    trHash.insert('ь',"");
    trHash.insert('э',"e");    trHash.insert('ю',"yu");
    trHash.insert('я',"ya");
    str = str.toLower();
    for(int i=0;i<str.size();i++) {
        qDebug() << str.at(i);
        if(trHash.contains(str.at(i)) == true){
            result.append(trHash.value(str.at(i)));
        }
        else result.append(str.at(i));
    }
    ui->lineEditTest->setText(result);
}





Не сочтите за некрофилию
Стиль программирования if(trHash.contains(str.at(i)) == true) в Вашем коде выше (взят был из http://www.forum.crossplatform.ru/lofivers....php/t3712.html ) недопустим. Вы в булевом условии сравниваете ответ с истиной?!?!?!?!

надеюсь за год , Вы исправили эту свою привычку.
посмотрите внимательно что получается:
если ( (правда == правда)=правда )...
если ( (ложь == правда)=ложь )...

у Вас ответ и так правда или ложь, зачем её сравнивать ещё раз?
должно быть:
if ( trHash.contains(str.at(i)) ) ... contains - возвращает bool.

bool - это синтетический тип на самом деле это int
0 = false
<0> = true - любое не нулевое значение, как положительное, так и отрицательное даст true

if (1)... - true пойдёт в ветвь then
if (-1)... - true пойдёт в ветвь then
if (-909090)... - true пойдёт в ветвь then
if (0)... - false пойдёт в ветвь else


таким образом можно делать что-то вроде:
if ( массив.size() )..., но конечно не стоит у массива(не только QVector, но и QList, и QStringList...) есть isEmpty()

Ещё раз прошу прощения. Надеюсь за год Вы уже исправились. Просто это был шок и решил подсказать Вам как правильно.

Kagami Дата 29.1.2011, 10:10
  Файл назван *.cpp, поэтому он считается файлом исходных кодом. Из-за этого он компилируется два раза - один раз как файл myclass.cpp, второй - в составе mainwindow.cpp.
Awesome Дата 28.1.2011, 23:30
  Litkevich Yuriy, я вроде бы делал то, про что говорит silver47, да и инклуд у меня был всего один. Если только creator сам не добавил еще один куда-нибудь :)
Litkevich Yuriy Дата 27.1.2011, 21:04
 
Цитата(igor_bogomolov @ 27.1.2011, 1:17) *
Видимо так нельзя
а ты за препроцессора, для понимания, сделай работу. Вместо строки
#include "myclass.cpp"
помести этот самый файл, всюду где в проекте эта строка применяется, и посмотри что получится.
silver47 Дата 27.1.2011, 7:36
  multiple definition of

множественное объявление одного и того же. Не забываем про
#ifndef MYCLASS_H
#define MYCLASS_H
..
..
..
#endif // MYCLASS_H


А так да - лучше все таки делить на заголовочные и сорсные.
Awesome Дата 27.1.2011, 0:01
  хм. Мой класс не был разделен на файлы заголовка и файлы с методами, и то и другое было в файле myclass.cpp
Видимо так нельзя, потому что после разделения класса на .h и .cpp всё, вроде бы, работает.
Спасибо.
igor_bogomolov Дата 26.1.2011, 23:17
 
Цитата(Awesome @ 26.1.2011, 22:40) *
#include "myclass.cpp"
Заголовочный файл (*.h) подключать через include надо, а не .cpp
Awesome Дата 26.1.2011, 22:40
  Создаю в QtCreator проект GUI, создаю файл myclass.cpp:
class myClass {
private:
    int itsAbc;
    void setAbc();
public:
    myClass();
    ~myClass() { }
};

myClass::myClass() {
    setAbc();
}

void myClass::setAbc() {
    itsAbc = 666;
}


Пишу в mainwindow.cpp
#include "myclass.cpp"


Жму "Выполнить".
Полный текст консоли сборки:
Раскрывающийся текст
Выполняется сборка проекта nerabotaetclass...
Настройки не изменились, этап qmake пропускается.
Запускается "C:/Qt/2010.05/mingw/bin/mingw32-make.exe" -w

mingw32-make: Entering directory `C:/][/qt/nerabotaetclass-build-desktop'

C:/Qt/2010.05/mingw/bin/mingw32-make -f Makefile.Debug

mingw32-make[1]: Entering directory `C:/][/qt/nerabotaetclass-build-desktop'

g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -mthreads -Wl -Wl,-subsystem,windows -o debug\nerabotaetclass.exe debug/main.o debug/mainwindow.o debug/myclass.o debug/moc_mainwindow.o -L"c:\Qt\2010.05\qt\lib" -lmingw32 -lqtmaind -lQtGuid4 -lQtCored4

mingw32-make[1]: Leaving directory `C:/][/qt/nerabotaetclass-build-desktop'

mingw32-make: Leaving directory `C:/][/qt/nerabotaetclass-build-desktop'

debug/myclass.o: In function `myClass':

C:\][\qt\nerabotaetclass-build-desktop/../nerabotaetclass/myclass.cpp:10: multiple definition of `myClass::myClass()'

debug/mainwindow.o:C:\][\qt\nerabotaetclass-build-desktop/../nerabotaetclass//myclass.cpp:10: first defined here

debug/myclass.o: In function `myClass':

C:\][\qt\nerabotaetclass-build-desktop/../nerabotaetclass/myclass.cpp:10: multiple definition of `myClass::myClass()'

debug/mainwindow.o:C:\][\qt\nerabotaetclass-build-desktop/../nerabotaetclass//myclass.cpp:10: first defined here

debug/myclass.o:C:\][\qt\nerabotaetclass-build-desktop/../nerabotaetclass/myclass.cpp:14: multiple definition of `myClass::setAbc()'

debug/mainwindow.o:C:\][\qt\nerabotaetclass-build-desktop/../nerabotaetclass//myclass.cpp:14: first defined here

collect2: ld returned 1 exit status

mingw32-make[1]: *** [debug\nerabotaetclass.exe] Error 1

mingw32-make: *** [debug] Error 2

Процесс "C:/Qt/2010.05/mingw/bin/mingw32-make.exe" завершился с кодом %2.
Возникла ошибка при сборке проекта nerabotaetclass (цель: Настольный компьютер)
Во время выполнения сборки на этапе "Сборка"
igor_bogomolov Дата 26.1.2011, 22:10
  Ну так ты код приложи, что бы было с чем разбираться
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 19.4.2024, 19:02