Форум программистов, компьютерный форум 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, 00:22     Множественное определение переменной
Доброго времени суток.

Просидев n-ое кол-во часов, доделал считай проект и тут вылезли ошибки о multiple definition. Ругается на переменные, определённые в .h файле, в хэдере само собой присутствует конструкция #ifndef #define #endif.
Поэтому не понятно почему ругается компилятор, ведь в случае повторного включения, переменные не будут
созданы снова. Сделав переменные константами всё заработало, но мне неинтересно почему так.

.h файл с переменными
DataStructures.h
C++
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
#ifndef CDATASTRUCTURES_H
#define CDATASTRUCTURES_H
 
#include <QVector>
#include <QMap>
#include <QStringList>
 
int   CoordCount  = 4;
 
nt   lbXIndex    = 0;
int   lbYindex    = 1;
 
const int   ruXIndex    = 2;
const int   ruYIndex    = 3;
 
const int   MinXCoordValue  = 1;
const int   MaxXCoordValue  = 10;
 
const int   MinYCoordValue  = 1;
const int   MaxYCoordValue  = 10;
 
const int   PortionValue    = 1000;
 
struct Coord {
    Coord() {
        coord.resize(CoordCount);
    }
 
    QVector<int> coord;
};
 
 
 
#endif // CDATASTRUCTURES_H


Case.h
C++
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
#ifndef CASE_H
#define CASE_H
 
#include "DataStructures.h"
 
class CCase
{
public:
    CCase();
 
    ~CCase();
 
    void    SetCountryData(QString name, Coord countryCoord);
 
    void    InitCities();
    void    FindNeighbors();
 
    void    CalculateDays();
    bool    IsOnRange(int i, int j);
 
    QString GetResult();
 
private:
 
    struct City {
        City() {
            Complete = false;
        }
 
        bool IsEmpty() {
            return Balance.isEmpty();
        }
 
        QMap<QString, int>  Balance;
 
        void                DoTransfer();
        void                GetTransfer(QString name, int transfer);
 
        bool                Complete;
        QVector<City*>      Neighbors;
 
 
    };
 
    struct Country {
        Country() {
            Complete    = false;
            Days        = 0;
        }
 
        QString         Name;
 
        Coord           CountryCoord;
        QVector<City*>  Cities;
 
        int     Days;
        bool    Complete;
    };
 
    QVector<Country>    mCountries;
    QStringList         mCountriesNames;
 
    City**              mCities;
 
    int                 mArrayWidth;
    int                 mArrayHeight;
 
    int                 mOffsetX;
    int                 mOffsetY;
 
    enum Constants {
        DefaultBalance  = 1000000,
        PortionValue    = 1000,
        MaxDayCount     = 100000
    };
 
    bool                mComplete;
};
 
#endif // CASE_H


После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 19:22. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru