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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
TempuSFatumA
1 / 1 / 0
Регистрация: 02.04.2013
Сообщений: 96
Завершенные тесты: 1
#1

LNK 2005, переменные уже определены в другом модуле - C++

08.10.2013, 01:20. Просмотров 425. Ответов 12
Метки нет (Все метки)

Здравия желаю! Проблема в том, что 2 эти статические переменные определяются еще раз.
Всего 2 .cpp и в каждый добавлен .h с этим классом. Если определять статические в 1 из .cpp ошибка уходит. Но хочется все же, чтобы они определялись в .h. #ifndef #define #endif не помогают. Есть ли какое-то решение проблемы?
C++
1
2
3
4
5
6
7
8
9
10
class flight
{
    static int mnt;
    static int num;
public:
    flight();
    ~flight();
};
int flight::num=0;
int flight::mnt=0;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.10.2013, 01:20
Здравствуйте! Я подобрал для вас темы с ответами на вопрос LNK 2005, переменные уже определены в другом модуле (C++):

Ошибки LNK 2005, LNK 1169 - C++
Не могу найти ошибку в проге: functions.h ----------- #include <iostream> #include <iomanip> #include <conio.h> #include...

Ошибка: не определены переменные класса - C++
Здравствуйте. Есть класс, он содержит 3 private переменных и функцию, работающую с ними. При компиляции появляется ошибка, что не...

Подскажите как правильно подключать библиотеки и решения. (функции уже определены в *.obj) - C++
Вот тут взял самомопальный aes. Там есть 3 исходных кода. 3 - сама программа. 1 и 2 - библиотека и решение.

Почему нельзя использовать в операторе case переменные, которые определены как #define - C++
Я не понимаю, почему Visual Studio ругается на строку с case в коде. Вроде все правильно. Если там написать напрямую цифру, тогда все...

глобальные переменные в модуле - C++
Нужно сохранить пару массивов и несколько переменных, но так чтобы их в основной программе видно не было, хочу сделать статик внутри...

Работа с tinyxml ошибки LNK 2019 и LNK 2001 - C++
всем привет! скачал архив tinyxml, разархивировал в папку проекта затем написал следующий код: #include "stdafx.h" #include...

12
castaway
Эксперт С++
4885 / 3020 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
08.10.2013, 01:24 #2
Класс опиши в одном заголовочном файле, а 9-ю и 10-ю строки перенеси в один из .cpp файлов, там где вся реализация у тебя находится.
0
TempuSFatumA
1 / 1 / 0
Регистрация: 02.04.2013
Сообщений: 96
Завершенные тесты: 1
08.10.2013, 01:25  [ТС] #3
Так о том и речьПо-другому никак?
0
castaway
Эксперт С++
4885 / 3020 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
08.10.2013, 01:26 #4
Покажи весь код.
0
TempuSFatumA
1 / 1 / 0
Регистрация: 02.04.2013
Сообщений: 96
Завершенные тесты: 1
08.10.2013, 01:32  [ТС] #5
C++
1
2
3
//1.cpp
#include "3.h"
...
C++
1
2
3
//2.cpp
#include "3.h"
...
C++
1
2
3
4
5
6
7
8
9
10
11
//3.h
class flight
{
    static int mnt;
    static int num;
public:
    flight();
    ~flight();
};
int flight::num=0;
int flight::mnt=0;
Собственно это описано в начале было, но если так нагляднее.
0
castaway
Эксперт С++
4885 / 3020 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
08.10.2013, 01:35 #6
В заголовочном файле не должны быть определения переменных. Вынеси их в файл .cpp
1
alsav22
5425 / 4820 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.10.2013, 01:39 #7
TempuSFatumA, два cpp - в один.
0
TempuSFatumA
1 / 1 / 0
Регистрация: 02.04.2013
Сообщений: 96
Завершенные тесты: 1
08.10.2013, 01:40  [ТС] #8
Спасибо, жаль, что нельзя.

Добавлено через 1 минуту
2 цпп это тоже решение проблемы, но нужно именно с разделением цпп.
0
castaway
Эксперт С++
4885 / 3020 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
08.10.2013, 01:41 #9
Цитата Сообщение от TempuSFatumA Посмотреть сообщение
2 цпп это тоже решение проблемы, но нужно именно с разделением цпп.
Это глупость. Так не делают.
0
TempuSFatumA
1 / 1 / 0
Регистрация: 02.04.2013
Сообщений: 96
Завершенные тесты: 1
08.10.2013, 01:44  [ТС] #10
А, то есть надо только .h плодить и инклюдить их в 1 .cpp?
0
castaway
Эксперт С++
4885 / 3020 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
08.10.2013, 01:47 #11
Не надо ничего плодить без необходимости. Обычно один класс - один файл (.h, если не шаблонный то и .cpp). Все приходит с опытом..
1
TempuSFatumA
1 / 1 / 0
Регистрация: 02.04.2013
Сообщений: 96
Завершенные тесты: 1
08.10.2013, 01:50  [ТС] #12
А, вот, собственно 1 из .cpp изменил на .h и всё заработало. Пасибо, каст, про "глупость"
0
castaway
Эксперт С++
4885 / 3020 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
08.10.2013, 02:00 #13
На самом деле это не выход. Ты не понял сути. Прототипы и определения надо объявлять в заголовочных файлах, для этого они и созданы. .cpp файлы созданы для того чтобы описывать в них реализацию. Это ключевая парадигма модульного программирования.
0
08.10.2013, 02:00
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.10.2013, 02:00
Привет! Вот еще темы с ответами:

Как определить размер массива объявленного в другом модуле? - C++
Возникла необходимость разбить программу на модули, и появилась проблема: Module1.cpp: ... int mas = {1, 2, 3, 4, 5}; ... ...

Функция уже определена в другом файле - C++
Который день бьюсь и не могу найти ответа, подскажите, если знаете. Есть sparseMatrix.h: #pragma once #include <vector> #include...

Переменные в модуле - PascalABC.NET
Использовал в собственном модуле переменные типа integer со значениями из основного кода, но при запуске ожидался другой результат : нужно...

Использование типа в другом модуле - Delphi
Добрый день! Есть модуль в котором указана запись : type recSprite = record ... end; Есть другой модуль где нужно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru