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

Ошибка выноса структуры в отдельный файл - C++

Восстановить пароль Регистрация
 
Kseon12
61 / 3 / 1
Регистрация: 22.12.2011
Сообщений: 99
20.08.2013, 16:33     Ошибка выноса структуры в отдельный файл #1
Доброго времени суток. Имеется такая проблема: у меня часто используется структура координат в разных файлах, потому я ее решил вынести в отдельный файл и подключать. Вынес ее в заголовочный файл Struct.h, но когда программа компилируется, выдаются ошибки в файле "xstddef".
Одна из ошибок:
"Ошибка 1 error C2784: bool std::operator <(const std::_Tree<_Traits> &,const std::_Tree<_Traits> &): не удалось вывести аргумент шаблон для "const std::_Tree<_Traits> &" из "const coordinateSet" c:\program files (x86)\microsoft visual studio 11.0\vc\include\xstddef 180 1"

C++
1
2
3
4
5
6
struct coordinateSet
{
    char* direction_X;
    int* direction_Y;
};
char TOP_COORDINATES [] = {'a','b','c','d','e','f','g','h','k','l','m'};
В чем я ошибся ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.08.2013, 16:33     Ошибка выноса структуры в отдельный файл
Посмотрите здесь:

Вопрос по выносу кода в отдельный файл C++
C++ Вынесение кода в отдельный файл.
Класс в отдельный файл C++
как вынести класс в отдельный файл? C++
Как вынести функцию с++ в отдельный файл C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
20.08.2013, 16:58     Ошибка выноса структуры в отдельный файл #2
Цитата Сообщение от Kseon12 Посмотреть сообщение
Вынес ее в заголовочный файл Struct.h,
Куда подключили его?
Kseon12
61 / 3 / 1
Регистрация: 22.12.2011
Сообщений: 99
20.08.2013, 17:20  [ТС]     Ошибка выноса структуры в отдельный файл #3
Подключаю его в 3 заголовочных файлах(по сути - во всех)
Ronan
1 / 1 / 0
Регистрация: 28.06.2013
Сообщений: 29
20.08.2013, 17:26     Ошибка выноса структуры в отдельный файл #4
Цитата Сообщение от Kseon12 Посмотреть сообщение
Подключаю его в 3 заголовочных файлах(по сути - во всех)
как это заголовочный файл подключешь в 3 заголовочных? может надо в файл с функцией main() подключать? или не так понял?
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
20.08.2013, 17:48     Ошибка выноса структуры в отдельный файл #5
Цитата Сообщение от Kseon12 Посмотреть сообщение
Подключаю его в 3 заголовочных файлах(по сути - во всех)
Тогда из него нужно определение массива убрать, иначе будет множественное определение.

Добавлено через 14 минут
Цитата Сообщение от Kseon12 Посмотреть сообщение
потому я ее решил вынести в отдельный файл и подключать
До выноса в отдельный файл нормально всё работало? Это всё содержание файла?
Kseon12
61 / 3 / 1
Регистрация: 22.12.2011
Сообщений: 99
20.08.2013, 17:51  [ТС]     Ошибка выноса структуры в отдельный файл #6
Цитата Сообщение от alsav22 Посмотреть сообщение
Тогда из него нужно определение массива убрать, иначе будет множественное определение.
Пробовал, все равно ошибки остаются. Из тех сообщений я так понял что компилятору не по душе вынесенная мной структура

Добавлено через 54 секунды
Цитата Сообщение от alsav22 Посмотреть сообщение
До выноса в отдельный файл нормально всё работало?
Да, во всяком случае запускалась )
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
20.08.2013, 19:54     Ошибка выноса структуры в отдельный файл #7
Цитата Сообщение от Kseon12 Посмотреть сообщение
Да, во всяком случае запускалась )
Тут вопрос о компиляции без ошибок. Информации мало. Показывайте файлы, чтобы видеть как всё сделано.
Kseon12
61 / 3 / 1
Регистрация: 22.12.2011
Сообщений: 99
21.08.2013, 00:04  [ТС]     Ошибка выноса структуры в отдельный файл #8
А файл собственно я и привел вверху топика. Хоть с объявлением массива хоть без, ошибки не меняются.

В других файлах - я его подключаю, и просто указываю структуру как получаемый параметр(либо как вектор етой структуры)
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
21.08.2013, 00:09     Ошибка выноса структуры в отдельный файл #9
Не файл прошу показать, а файлы, все. Чтобы видеть, где что подключено и как. Или проект выложите.

Добавлено через 1 минуту
Цитата Сообщение от Kseon12 Посмотреть сообщение
Хоть с объявлением массива хоть без, ошибки не меняются.
С массивом понятно. С ним ошибки будут дальше, множественное определение компоновщик выдаст, а до него дело не доходит.
Kseon12
61 / 3 / 1
Регистрация: 22.12.2011
Сообщений: 99
21.08.2013, 00:26  [ТС]     Ошибка выноса структуры в отдельный файл #10
Ну хотя бы вот(методы пока не реализованы):
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
#include<map>
#include"Struct.h"
using std::map;
 
class PlayerBasic
{
 
private:
    
    map<coordinateSet,int> field;
    void moveOpportunity(const char* direction_X,const  int* direction_Y);
 
public:
 
    const int player_ID;
    
    PlayerBasic(int);
    virtual ~PlayerBasic(void);
    void Dislocation(void);
    void Step(void);
    void Dislocation(coordinateSet);
    void Step(coordinateSet);
    void print_field(void);
    
};
А если массив объявить как static ?
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
21.08.2013, 00:58     Ошибка выноса структуры в отдельный файл #11
Цитата Сообщение от Kseon12 Посмотреть сообщение
Ну хотя бы вот
"Хотя бы" меня не устроит (может кого-то?). Нужен весь код, который выдаёт эту ошибку (а лучше проект). Без этого я не смогу помочь.

Добавлено через 1 минуту
Цитата Сообщение от Kseon12 Посмотреть сообщение
А если массив объявить как static ?
Про массив пока забудьте. До него дело, как я понял, не доходит. С ним потом разберёмся.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.08.2013, 13:55     Ошибка выноса структуры в отдельный файл
Еще ссылки по теме:

C++ Создайте файл Студент. Занесите в отдельный файл записи из файла Студент, добавив сведения о новых студентах
C++ Эмуляция выноса функций шаблона в отдельный source-файл
C++ Функции в отдельный файл

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

Или воспользуйтесь поиском по форуму:
Kseon12
61 / 3 / 1
Регистрация: 22.12.2011
Сообщений: 99
21.08.2013, 13:55  [ТС]     Ошибка выноса структуры в отдельный файл #12
В общем, таки докопался где именно эта проблема вылазит. С класса того был реализован только один метод
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void PlayerBasic::print_field(void)
{
    char TOP_COORDINATES [] = {'a','b','c','d','e','f','g','h','k','l','m'};
    for(int i =0;i<10; i++)
    {
        
        for(int j=0;j<10;j++)
        {
            coordinateSet tmp = {&TOP_COORDINATES[j],&i};
            std::cout << "|_";
            std::cout<<field.count(tmp);
            std::cout << "_";
        }
        std::cout << "|"<<std::endl;
    }
}
Ошибка в 12 строке
В конструкторе я еще пытался добавить элемент - все то же.

Я так понимаю у меня ошибка либо в структуре , либо в map который отказывается работать со структурой в качестве ключа

Добавлено через 27 минут
На форуме писали что нужно добавить вот это
C++
1
     bool operator <(const coordinateSet&) const;
Добавил, теперь вот такие ошибки :
Кликните здесь для просмотра всего текста
Ошибка 1 error LNK2001: неразрешенный внешний символ ""public: bool __thiscall PlayerBasic::coordinateSet::operator<(struct PlayerBasic::coordinateSet const &)const " (??McoordinateSet@PlayerBasic@@QBE_NABU01@@Z)" H:\Documents\Visual Studio 2012\Projects\SeaBattle\SeaBattle\PlayerBasic.obj SeaBattle


Добавлено через 2 минуты
писал еще так :
C++
1
2
3
4
5
6
7
    
bool operator <(const coordinateSet& a)
     {
         if(direction_X == a.direction_X && direction_Y == a.direction_Y)
             return true;
         return false;
     };
Кликните здесь для просмотра всего текста
Ошибка 1 error C2678: бинарный "<": не найден оператор, принимающий левый операнд типа "const PlayerBasic::coordinateSet" (или приемлемое преобразование отсутствует) C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\xstddef 180 1 SeaBattle
Yandex
Объявления
21.08.2013, 13:55     Ошибка выноса структуры в отдельный файл
Ответ Создать тему
Опции темы

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