Форум программистов, компьютерный форум CyberForum.ru

Множественное определение переменной - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Незнаю что делать с Microsoft Visual Studio 2010. Исключение .Net Framework http://www.cyberforum.ru/cpp-beginners/thread1180321.html
Кидаю через буфер обмена код ранее работающий и вот такие дела: 1>------ Построение начато: проект: proba, Конфигурация: Debug Win32 ------ 1> proba.cpp 1>c:\users\дима\documents\visual studio 2010\projects\proba\proba\proba.cpp(5): warning C4129: : неизвестная escape-последовательность 1> proba.vcxproj -> c:\users\дима\documents\visual studio 2010\Projects\proba\Debug\proba.exe Затем...
C++ Составить процедуру Change Vector для умножения всех элементов вектора на число типа real Составить процедуру Change Vector для умножения всех элементов вектора на число типа real. http://www.cyberforum.ru/cpp-beginners/thread1180317.html
Тройки чисел C++
Напишите программу, находящую количество троек целых чисел a, b, p таких, что p — простое число, числа удовлетворяют равенству: \sqrt{a}-\sqrt(b)=\sqrt(p) и каждое из чисел a, b и p лежит в промежутке от N до M. Помогите пожалуйста)
C++ Как убрать последние две цифры после запятой?
Как убрать последние две цифры после запятой? остаток от деления? на с++
C++ Из строк введенного текста сформировать другой текст, в котором слова в строках будут располагаться по правилу http://www.cyberforum.ru/cpp-beginners/thread1180276.html
Ввести массив символов разделителей с заданным количеством символов и массив строк текста, содержащей неизвестное заранее количество строк. Признаком окончания ввода текста является ввод строки, содержащей все заданные символы разделители. Из строк введенного текста сформировать другой текст, в котором слова в строках будут располагаться в порядке увеличения количества символов в словах с...
C++ Найти седловую точку в матрице. Использование функций Элемент матрицы является седловой точкой, если он является наименьшим в своей строке и наибольшим в своем столбце (или наоборот: наибольшим в своей строке и наименьшим в своем столбце).Для заданной матрицы определить все седловые точки. Подскажите, пожалуйста, как вызвать функции, чтобы они передавали свое значение в main и программа правильно работала. Вот код: #include <cstdlib> #include... подробнее

Показать сообщение отдельно
alexey31415
 Аватар для alexey31415
59 / 59 / 3
Регистрация: 16.05.2010
Сообщений: 632
19.05.2014, 01:14  [ТС]     Множественное определение переменной
newbie666, просто говорит ,что переменная уже была инициализирована в файле mainwindow.cpp

UIComponents
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#ifndef UICOMPONENTS_H
#define UICOMPONENTS_H
 
#include <QtGui>
 
#include <QPlainTextEdit>
#include <QPushButton>
#include <QHBoxLayout>
#include <QVBoxLayout>
 
#include "Logic.h"
 
class UIComponents : public QWidget
{
    Q_OBJECT
public:
    explicit UIComponents(QWidget *pwgt = 0);
 
 
    QVBoxLayout*    GetLayout();
 
public slots:
    void    InputTextChangedHandler();
 
    void    btnVerifyHandler();
    void    btnCalculateHandler();
    void    btnClearHandler();
 
private:
    QPlainTextEdit* mInputEdit;
    QPlainTextEdit* mOutputEdit;
 
    QPushButton*    mbtnVerify;
    QPushButton*    mbtnCalculate;
    QPushButton*    mbtnClear;
 
    QVBoxLayout*    mLayout;
 
    CLogic          mLogicImpl;
};
 
#endif // UICOMPONENTS_H


mainwindow.h
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
 
#include <QMainWindow>
 
#include "UIComponents.h"
 
class MainWindow : public QMainWindow
{
    Q_OBJECT
 
public:
    MainWindow(QWidget *parent = 0);
    ~MainWindow();
 
private:
    int             mWidth;
    int             mHeight;
 
    UIComponents    mUIComponents;
};
 
#endif // MAINWINDOW_H


main.cpp
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
#include "mainwindow.h"
#include <QApplication>
 
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
 
    return a.exec();
}


Добавлено через 5 минут
Ещё такой вопрос возник. Почему может приложение падать при добавлении переменной в вектор. Необходим свой конструктор копирования?

В строке собственно ошибка
C++ (Qt)
1
mCases.push_back(mCurrentCase);
Привёл код классов

Logic.cpp
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
#include "Logic.h"
 
#include <QtAlgorithms>
#include <algorithm>
 
 
CLogic::CLogic() :
    mMaxCountriesCount(20),
    mMinCountriesCount(1),
    mCountriesCount(-1),
    mFinishFlag(0)
{
    mCountriesCountReg  = QRegExp("^\\d\\d?$");
    mCountryNameReg     = QRegExp("[A-Za-z]{1,25}");
    mCityCoordReg       = QRegExp("^\\d\\d?$");
}
 
bool CLogic::Verification(QString input) {
    mSplittedString.clear();
 
    mSplittedString = input.split(QRegExp("\\s+"));
 
    auto iter = mSplittedString.constBegin();
 
    VERIFICATION_CODE result;
 
    while(true) {
        result = CheckCountriesCount(iter);
 
        if(result != VALID_COUNTRIES_COUNT) {
 
            if(result == FINISH_VERIFICATION) {
                ShowMessage(result);
                return true;
            }
 
            ShowMessage(result);
            return false;
        }
 
 
        result = CheckCountriesData(iter);
 
        if(result != VALID_COUNTRIES_DATA) {
            ShowMessage(result);
            return false;
        }
    }
}
 
bool CLogic::IsValidIterator(QStringList::const_iterator &iter) {
    if(iter == mSplittedString.end()) {
        return false;
    }
 
 
    return true;
}
 
VERIFICATION_CODE CLogic::CheckCountriesCount(QStringList::const_iterator& iter) {
    if(!IsValidIterator(iter)) {
        return INVALID_END_OF_TEXT;
    }
 
    // returns true if string is matched exactly
    if(mCountriesCountReg.exactMatch(*iter)) {
        mCountriesCount = (*iter).toInt();
 
        // if iter reference to 0
        if(mCountriesCount == mFinishFlag) {
            return FINISH_VERIFICATION;
        }
 
        if(mCountriesCount < mMinCountriesCount ||
           mCountriesCount > mMaxCountriesCount) {
 
            return COUNTRIES_NUMBER_OUT_OF_RANGE;
        }
 
        CCase newCase;
        mCurrentCase = newCase;
 
        ++iter;
 
        return VALID_COUNTRIES_COUNT;
    }
 
    return UNACCEPTABLE_COUNTRIES_COUNT;
}
 
VERIFICATION_CODE CLogic::CheckCountriesData(QStringList::const_iterator &iter) {
 
    for(int i = 0;i < mCountriesCount;++i) {
        if(!IsValidIterator(iter)) {
            return INVALID_END_OF_TEXT;
        }
 
        if(!( mCountryNameReg.exactMatch(*iter) )) {
            // check appear of new case
            if(mCountriesCountReg.exactMatch(*iter)) {
                // don't expected countries data
                if(mCountriesCount == -1) {
                    mCases.push_back(mCurrentCase);
                    return NEW_CASE;
                }
            }
 
            return INVALID_COUNTRY_NAME;
        }
 
        mCountryName = *iter;
 
        ++iter;
 
        int coord = -1;
 
        Coord countryCoord;
 
        for(int j = 0;j < CoordCount;++j) {
            if(!IsValidIterator(iter)) {
                return INVALID_END_OF_TEXT;
            }
 
            if(!(*iter).contains(mCityCoordReg)) {
                return INVALID_CITY_COORD;
            }
 
            coord = (*iter).toInt();
 
            if(j == lbXIndex ||
               j == ruXIndex) {
 
                if(coord < MinXCoordValue ||
                   coord > MaxXCoordValue) {
 
                    return CITY_COORD_OUT_OF_RANGE;
                }
            }
 
            if(j == lbYindex ||
               j == ruYIndex) {
 
                if(coord < MinYCoordValue ||
                   coord > MaxYCoordValue) {
 
                    return CITY_COORD_OUT_OF_RANGE;
                }
            }
 
            countryCoord.coord.push_back(coord);
 
            ++iter;
        }
 
        mCurrentCase.SetCountryData(mCountryName, countryCoord);
    }
 
    mCases.push_back(mCurrentCase);
 
    mCountriesCount = -1;
 
    return VALID_COUNTRIES_DATA;
}


Case.cpp
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
CCase::CCase() :
    mOffsetX(MaxXCoordValue),
    mOffsetY(MaxYCoordValue),
    mArrayWidth(0),
    mArrayHeight(0),
    mComplete(false)
{
}
 
CCase::~CCase() {
    for(int i = 0;i < mArrayWidth;++i) {
        delete mCities[i];
    }
 
    delete mCities;
}
 
void CCase::SetCountryData(QString name, Coord countryCoord) {
    Country country;
 
    country.Name = name;
    country.CountryCoord = countryCoord;
 
    mCountries.push_back(country);
    mCountriesNames.push_back(name);
 
    mOffsetX = qMin(mOffsetX, countryCoord.coord[lbXIndex]);
    mOffsetY = qMin(mOffsetY, countryCoord.coord[lbYindex]);
 
    int newWidth = countryCoord.coord[ruXIndex] - mOffsetX + 1;
    int newHeight = countryCoord.coord[ruYIndex] - mOffsetY + 1;
 
    mArrayWidth = qMax(mArrayWidth, newWidth);
    mArrayHeight = qMax(mArrayHeight, newHeight);
}
 
Текущее время: 03:47. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru