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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
HedgehogNSK
0 / 0 / 0
Регистрация: 05.05.2013
Сообщений: 13
#1

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

17.06.2013, 08:56. Просмотров 1237. Ответов 7
Метки нет (Все метки)

Создавал файлы для классов двумя способами.
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 берёт тела функций, если он ничего не инклудит.

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

Не подключается graphics.h в Visual Studio - C++
В общем задача сделать график по формуле. Я работаю с Visual Studio и как только я ввел #include<graphics.h> - оно его сразу подчеркнуло и...

Множество ошибок в проекте Visual Studio после небольшого изменения кода - C++
Работал над проектом, писал код как обычно. В процессе написания постоянно собираю проект. Вот написал небольшую функцию в 5 строк, включил...

Как связать два cpp файла в одном проекте (visual studio 2010) - C++
Есть два программы: одна создает файл.txt, вторая читает из него данные и выводит на экран. создает файл #include <iostream> ...

Имеются ли отличия в компиляторах у сред разработки Visual Studio 2006 и Visual Studio 2015 ? - C++
скажите а где найти среду 2006 года? или можно использовать 2015 год?

Visual Studio Team Foundation Serverl или Visual Studio Professional - C++
Visual Studio Team Foundation Server 2010 Кто пользовался Visual Studio Team Foundation Server 2010, и чем она отличаеться от Visual...

С++ Builder и Visual Studio, что выбрать, литература - C++
Всем привет ! Начал изучать си++, есть книжка Джесса Либерти "Освой самостоятельно за 21 день". знаю основы - pascal, vb 6, php, js. Читая...

7
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
17.06.2013, 09:07 #2
Делается, обчно, так. Объявления классов в .h файлы, реализации в .cpp (за исключением шаблонов). В .cpp подключаются нужные .h.

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

Добавлено через 2 минуты
Цитата Сообщение от HedgehogNSK Посмотреть сообщение
не понятно откуда class.h берёт тела функций, если он ничего не инклудит.
Заголовочному файлу ненужны реализации. Компилятору нужны объявления, компоновщику - реализации.
2
HedgehogNSK
0 / 0 / 0
Регистрация: 05.05.2013
Сообщений: 13
17.06.2013, 15:18  [ТС] #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];
0
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
17.06.2013, 15:25 #4
Лучше проект выложите. Когда ничего не видно, трудно что-нибудь советовать.
1
HedgehogNSK
0 / 0 / 0
Регистрация: 05.05.2013
Сообщений: 13
17.06.2013, 18:07  [ТС] #5
Заархивировал. На сайте прикрепить не смог, так как ограничение 10мб. Архив весит 22. Залил сюда http://rusfolder.com/36884129
0
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
17.06.2013, 22:07 #6
Файлы с кодом.
1
Вложения
Тип файла: rar файлы h и cpp.rar (12.5 Кб, 13 просмотров)
HedgehogNSK
0 / 0 / 0
Регистрация: 05.05.2013
Сообщений: 13
17.06.2013, 22:18  [ТС] #7
Так значит заголовок используемого класса нужно инклудить и в .cpp, и в .h . Понятно.
А очередность подключения важна?
0
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
17.06.2013, 22:29 #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"
1
17.06.2013, 22:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.06.2013, 22:29
Привет! Вот еще темы с ответами:

Visual Studio 2010 кто что думает - C++
Давайте обговорим 10ю студию. Мое мнение - она недоработаная, например, стоит что-то поменять в хэдере и она вылетает, интелисенс...

Что лучше Visual studio 2010 C++ или Builder 6 C++ ? - C++
Только что начал программировать на C++, и не хотелось бы потом переучиваться на другую среду программирования, так что пожалуйста,...

Есть в Visual Studio 2013 что-то типа builder c++ 6 - C++
Есть в Visual Studio 2013 что-то типа builder c++ 6 и стоит его учит или есть какие-то более популярен компилятьр за builder c++ 6

Что лучше Visual Studio или Builder C++ подскажите? - C++
Что лучше Visual Studio или Builder C++ подскажите?


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

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

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