С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.65/75: Рейтинг темы: голосов - 75, средняя оценка - 4.65
20 / 19 / 22
Регистрация: 22.06.2016
Сообщений: 158
1

Подключение библиотек

16.11.2016, 15:30. Показов 15555. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток %username% !!!
Изучаю С++ не очень долго и возник такой вопрос. Необходимо подключить библиотеку <string> в класс. Но как это правильно сделать не могу понять.
main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <conio.h>
#include <string>
 
using namespace std;
#include "Book.h"
 
int main()
{
 
    _getch();
    return 0;
}
Book.h
C++
1
2
3
4
5
6
7
8
9
10
11
#pragma once
typedef unsigned int ui;
class Book
{
private:
    string Name;
public:
    Book();
    ~Book();
    void setName(string);
};
Book.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
#include "Book.h"
 
#include <string> //почему надо в этом файле подключать эту библиотеку если она подключена в main?
using namespace std; //почему надо объявлять неймспейс если он объявлен в main?
 
Book::Book(){}
Book::~Book(){}
//Почему не определяется стринг без объявления инкудов в этом файле?
void Book::setName(string name){
Name = name;
}
В файле Book.h все библиотеки из main.cpp работают, но в Book.cpp нет.
Как быть?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.11.2016, 15:30
Ответы с готовыми решениями:

Подключение библиотек
Здравствуйте! Проблема: не могу подключить новые библиотеки! Имею VS 2010 Ultimate ! кликаю:...

Подключение библиотек
Здравствуйте ув. форумчане.Я пишу программы c++ на notepad++.Возможно ли добавить библиотеки такие...

подключение библиотек
доброго времени суток #pragma comment(lib, &quot;GLU32.lib&quot;) как понять из какой папки программа будет...

Подключение библиотек
c:\documents and settings\admin\рабочий стол\compressed_matrix\compressed_matrix\main.cpp(4) :...

7
Форумчанин
Эксперт CЭксперт С++
8216 / 5046 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
16.11.2016, 16:00 2
Следует понять, что препроцессорная команда include всего-навсего вставляет содержимое переданного файла как есть.
Если у вас поля класса содержат string, вам достаточно будет объявить #include <string> в хедере Book.h, а он уже сам заинклюдится в Book.cpp и main.cpp

Добавлено через 3 минуты
Book.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#ifndef BOOK_H
#define BOOK_H
 
#include <string>
 
class Book
{
public:
    Book(const std::string &s);
    std::string getName() const;
protected:
    std::string m_name;
};
 
#endif // BOOK_H
Book.cpp
C++
1
2
3
4
5
6
7
8
9
10
#include "Book.h"
 
Book::Book(const std::string &s) :
    m_name(s)
{}
 
std::string Book::getName() const
{
    return m_name;
}
main.cpp
C++
1
2
3
4
5
6
7
8
#include <iostream>
#include "Book.h"
 
int main()
{
    Book b("Eniki");
    std::cout << b.getName() << std::endl;
}
1
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
16.11.2016, 16:21 3
Цитата Сообщение от kodzuru Посмотреть сообщение
C++
1
2
using namespace std; 
#include "Book.h"
kodzuru, если делаешь using namespace std;, то делай ниже всех #include.
1
20 / 19 / 22
Регистрация: 22.06.2016
Сообщений: 158
16.11.2016, 17:23  [ТС] 4
Цитата Сообщение от nd2 Посмотреть сообщение
Сообщение от kodzuru
C++Выделить код
1
2
using namespace std;
#include "Book.h"
kodzuru, если делаешь using namespace std;, то делай ниже всех #include.
А если я хочу использовать using namespace std; в файлах класса. Мне его надо подключить во всех файлах? Или как его грамотно подключить, чтобы он во всех файлах работал?
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
16.11.2016, 17:34 5
Цитата Сообщение от kodzuru Посмотреть сообщение
как его грамотно подключить
В .h файлах не делай, там только std:: используй. А в .cpp:
Цитата Сообщение от nd2 Посмотреть сообщение
делай ниже всех #include
Стоит ли использовать "using namespace std"?
Стоит ли использовать "using namespace std"?
Стоит ли использовать "using namespace std"?
1
20 / 19 / 22
Регистрация: 22.06.2016
Сообщений: 158
16.11.2016, 18:15  [ТС] 6
Спасибо!
А могу я использовать using std::string? чтобы к каждому объявлению не приписывать?
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
16.11.2016, 18:27 7
Цитата Сообщение от kodzuru Посмотреть сообщение
А могу я использовать using std::string? чтобы к каждому объявлению не приписывать?
Там написано об этом.
1
20 / 19 / 22
Регистрация: 22.06.2016
Сообщений: 158
16.11.2016, 18:31  [ТС] 8
Цитата Сообщение от nd2 Посмотреть сообщение
Там написано об этом.
Не использовать using в заготовочных фалах ! уяснил, спасибо! )
0
16.11.2016, 18:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.11.2016, 18:31
Помогаю со студенческими работами здесь

Подключение библиотек
Здравствуйте. Подскажите пожалуйста почему при попытке подключить к программе библиотеки &lt;stdlib.h&gt;...

Подключение библиотек в GUI
При написании GUI приложения, пишет: E2451 Undefined symbol 'string' Подключал библиотеку...

Подключение библиотек в Eclipse c++
Решил заняться OpenGL и сказал парочку библиотек. Решил добавить их в Eclipse и провалился. Дело в...

Подключение неиспользуемых библиотек
Что будет, если я подключаю библиотеки, но не использую их. Какие последствия?) снизили балл за...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru