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

Visual Studio 10. Что и когда подключается в проекте? - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
HedgehogNSK
0 / 0 / 0
Регистрация: 05.05.2013
Сообщений: 13
17.06.2013, 08:56     Visual Studio 10. Что и когда подключается в проекте? #1
Создавал файлы для классов двумя способами.
1) Просто создавал header и в нём хранились как описания функций, так и тела.
2) С помощью правой кнопки и создания класса. В результате появляется header и cpp файл.
Суть проблемы:
Внутри некоторых классов используются экземпляры других классов. В моём конкретном случае инклуды в main.cpp выглядят так:
C++
1
2
3
4
5
6
#include "cards.h"
#include "player.h"
#include "board.h"
#include "game.h"
#include "class1.h"
#include "class2.h"
Дак вот в 2х последних классах: class1 и class2, - не видно определения классов описанных выше. Эти 2 класса были созданы 2м способом, остальные 1ым. Те которые были созданы 1м способом отлично видят друг друга.
Грубо говоря структура вглядит примерно следующим образом:
C++
1
2
3
4
5
6
class Card{...};
class board{ Card c;...};
class player{ Card c;...};
class game{Player pl; Board bo;...};
class class1{Player pl; Board bo;...};
class class2{Player pl; Board bo;class1 cl;...};
Теперь о самих классах. Как я уже говорил, используя VS создание классов, создаётся 2 файла: class.h и class.cpp. Где в class.h находится описание класса, а в class.cpp инклудится StdAfx.h и собственно class.h. Но в main.cpp мы почему-то всё равно инклудим class.h, хотя не понятно откуда class.h берёт тела функций, если он ничего не инклудит.

Хочу понять как происходит подключение в проекте, и как разрешить мою проблему. Спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.06.2013, 08:56     Visual Studio 10. Что и когда подключается в проекте?
Посмотрите здесь:

C++ С++ Builder и Visual Studio, что выбрать, литература
Visual Studio 2010 кто что думает C++
Что лучше Visual studio 2010 C++ или Builder 6 C++ ? C++
Как связать два cpp файла в одном проекте (visual studio 2010) C++
C++ Не подключается graphics.h в Visual Studio
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
17.06.2013, 09:07     Visual Studio 10. Что и когда подключается в проекте? #2
Делается, обчно, так. Объявления классов в .h файлы, реализации в .cpp (за исключением шаблонов). В .cpp подключаются нужные .h.

Добавлено через 1 минуту
Цитата Сообщение от HedgehogNSK Посмотреть сообщение
Хочу понять как происходит подключение в проекте,
Перед компиляцией вместо инклудов .h файлов вставляется их текст.

Добавлено через 2 минуты
Цитата Сообщение от HedgehogNSK Посмотреть сообщение
не понятно откуда class.h берёт тела функций, если он ничего не инклудит.
Заголовочному файлу ненужны реализации. Компилятору нужны объявления, компоновщику - реализации.
HedgehogNSK
0 / 0 / 0
Регистрация: 05.05.2013
Сообщений: 13
17.06.2013, 15:18  [ТС]     Visual Studio 10. Что и когда подключается в проекте? #3
Я попытался всё привести к одному виду и сделать всё по-правильному. Для каждого из классов создал .cpp и вынес их тела, но к сожалению ничего не вышло.
Тело player.cpp (в этом классе есть экземпляры класса Card и методы с входными параметрами типа Game):
[CPP ]
//player.cpp
#include "StdAfx.h"
#include "player.h"
#include "game.h"
#include "cards.h"

//далее в файле тела методов
[/CPP]
C++
1
2
3
4
//player.h
#pragma once
class Player
{...}
содержание заголовочных файлов классов game и card аналогично содержанию player.h

Под словами не вышло, я имею в виду:
1>f:\учёба\диплом\oho\poker_emulator\poker_emulator\player.h(27): error C2061: syntax error : identifier 'Game'
для строки:
C++
1
int deccision_interface(Game, int);
1>f:\учёба\диплом\oho\poker_emulator\poker_emulator\player.h(5): error C2146: syntax error : missing ';' before identifier 'c'
для строки:
C++
1
Card c[2];
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
17.06.2013, 15:25     Visual Studio 10. Что и когда подключается в проекте? #4
Лучше проект выложите. Когда ничего не видно, трудно что-нибудь советовать.
HedgehogNSK
0 / 0 / 0
Регистрация: 05.05.2013
Сообщений: 13
17.06.2013, 18:07  [ТС]     Visual Studio 10. Что и когда подключается в проекте? #5
Заархивировал. На сайте прикрепить не смог, так как ограничение 10мб. Архив весит 22. Залил сюда http://rusfolder.com/36884129
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
17.06.2013, 22:07     Visual Studio 10. Что и когда подключается в проекте? #6
Файлы с кодом.
Вложения
Тип файла: rar файлы h и cpp.rar (12.5 Кб, 13 просмотров)
HedgehogNSK
0 / 0 / 0
Регистрация: 05.05.2013
Сообщений: 13
17.06.2013, 22:18  [ТС]     Visual Studio 10. Что и когда подключается в проекте? #7
Так значит заголовок используемого класса нужно инклудить и в .cpp, и в .h . Понятно.
А очередность подключения важна?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.06.2013, 22:29     Visual Studio 10. Что и когда подключается в проекте?
Еще ссылки по теме:

Есть в Visual Studio 2013 что-то типа builder c++ 6 C++
Незнаю что делать с Microsoft Visual Studio 2010. Исключение .Net Framework C++
C++ Не работает библиотека, что делать? Или где ее скачать для Visual Studio C++ 2013?

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

Или воспользуйтесь поиском по форуму:
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
17.06.2013, 22:29     Visual Studio 10. Что и когда подключается в проекте? #8
Цитата Сообщение от HedgehogNSK Посмотреть сообщение
Так значит заголовок используемого класса нужно инклудить и в .cpp, и в .h
Что используется в файле, то нужно и инклудить, чтобы компилятор знал, что это. Очерёдность инклудов не важна. И в файле с main(), лишние инкуды можно убрать (закоментированные есть в других .h файлах):
C++
1
2
3
4
5
6
//#include "cards.h"
#include "player.h"
//#include "board.h"
//#include "game.h"
#include "game1.h"
#include "round.h"
Yandex
Объявления
17.06.2013, 22:29     Visual Studio 10. Что и когда подключается в проекте?
Ответ Создать тему
Опции темы

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