Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
1 / 1 / 0
Регистрация: 31.01.2020
Сообщений: 148

Не получается правильно превратить один файл в три

03.04.2020, 08:37. Показов 1866. Ответов 4

Студворк — интернет-сервис помощи студентам
Есть такая программа:
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include <iostream>
 
class Point
{
    public:
        int x = 0;
        int y = 0;
 
        void print()
        {
            std::cout<<"("<<x<<";"<<y<<")"<<std::endl;
        }
 
        Point operator +(Point temp)
        {
            Point point;
            point.x = x + temp.x;
            point.y = y + temp.y;
            return point;
        }
 
        bool operator ==(Point temp)
        {
            if(x == temp.x && y == temp.y)
                return true;
            else
                return false;
        }
    private:
        bool permission = 0;
};
 
std::ostream &operator <<(std::ostream &output, Point point)
{
    output<<point.x<<" "<<point.y; 
    return output;
}
 
std::istream &operator >>(std::istream &input, Point &point)
{
    input>>point.x>>point.y;
    return input;
 
}
 
int main()
{
    Point A;
    std::cin>>A;
    std::cout<<A<<std::endl;
    return 0;
}
Я хочу её разделить на три файла: main.cpp, utils.cpp, utils.h
Делаю так

main.cpp:
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
#include "utils.h"
 
int main()
{
    Point A;
    std::cin>>A;
    std::cout<<A<<std::endl;
    return 0;
}
utils.cpp:
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
26
27
28
29
30
31
32
33
34
#include "utils.h"
void print()
{
    std::cout<<"("<<x<<";"<<y<<")"<<std::endl;
}
 
Point operator +(Point temp)
{
    Point point;
    point.x = x + temp.x;
    point.y = y + temp.y;
    return point;
}
 
bool operator ==(Point temp)
{
    if(x == temp.x && y == temp.y)
        return true;
    else
        return false;
}
 
std::ostream &operator <<(std::ostream &output, Point point)
{
    output<<point.x<<" "<<point.y; 
    return output;
}
 
std::istream &operator >>(std::istream &input, Point &point)
{
    input>>point.x>>point.y;
    return input;
 
}
utils.h:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#ifndef UTILS_H
#define UTILS_H
 
class Point
{
    public:
        int x = 0;
        int y = 0;
        void print();
        Point operator +(Point temp);
        bool operator ==(Point temp);
    private:
        bool permission = 0;
};
 
std::ostream &operator <<(std::ostream &output, Point point);
std::istream &operator >>(std::istream &input, Point &point);
#endif
Компилятор ругается, там конечно написано, что не так:
Bash
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
26
27
28
29
30
31
32
33
34
35
36
In file included from utils.cpp:1:0:
utils.h:16:6: error: ‘ostream’ in namespace ‘std’ does not name a type
 std::ostream &operator <<(std::ostream &output, Point point);
      ^~~~~~~
utils.h:17:6: error: ‘istream’ in namespace ‘std’ does not name a type
 std::istream &operator >>(std::istream &input, Point &point);
      ^~~~~~~
utils.cpp: In function ‘void print()’:
utils.cpp:4:7: error: ‘cout’ is not a member of ‘std’
  std::cout<<"("<<x<<";"<<y<<")"<<std::endl;
       ^~~~
utils.cpp:4:18: error: ‘x’ was not declared in this scope
  std::cout<<"("<<x<<";"<<y<<")"<<std::endl;
                  ^
utils.cpp:4:26: error: ‘y’ was not declared in this scope
  std::cout<<"("<<x<<";"<<y<<")"<<std::endl;
                          ^
utils.cpp:4:39: error: ‘endl’ is not a member of ‘std’
  std::cout<<"("<<x<<";"<<y<<")"<<std::endl;
                                       ^~~~
utils.cpp: In function ‘Point operator+(Point)’:
utils.cpp:10:12: error: ‘x’ was not declared in this scope
  point.x = x + temp.x;
            ^
utils.cpp:11:12: error: ‘y’ was not declared in this scope
  point.y = y + temp.y;
            ^
utils.cpp: At global scope:
utils.cpp:15:28: error: ‘bool operator==(Point)’ must take exactly two arguments
 bool operator ==(Point temp)
                            ^
utils.cpp:23:6: error: ‘ostream’ in namespace ‘std’ does not name a type
 std::ostream &operator <<(std::ostream &output, Point point)
      ^~~~~~~
utils.cpp:29:6: error: ‘istream’ in namespace ‘std’ does not name a type
 std::istream &operator >>(std::istream &input, Point &point)
Но я не могу этим воспользоваться. Помогите пожалуйста, как правильно это сделать?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.04.2020, 08:37
Ответы с готовыми решениями:

Не получается прочесть правильно текстовый файл в структуру а затем в бинарный файл
Нужно просто прочесть файл в структуру данных а потом оттуда записать в бинарный файл Вот как выглядит текстовый файл: 11122 Mary...

Какова вероятность того, что студент ответит правильно: только на один вопрос; на три вопроса
Студент знает 32 из 40 вопросов курса. На экзамене ему случайным образом предлагается три вопроса. Какова вероятность того, что студент...

Как сохранить три RichTextBox в один RTF файл?
Всем привет!!! Такой вопрос: На форме есть три ричтекстбокса. Как их все сохранить в один RTF файл. Делаю стандартными методами,...

4
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
03.04.2020, 09:02
Лучший ответ Сообщение было отмечено lukinegor как решение

Решение

lukinegor, в начало utils.h добавь #include <iosfwd>, в начало utils.cpp добавь #include <ostream> и #include <istream>

Добавлено через 3 минуты
еще имя класса добавь:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void Point::print()
{
    std::cout<<"("<<x<<";"<<y<<")"<<std::endl;
}
 
Point Point::operator +(Point temp)
{
    Point point;
    point.x = x + temp.x;
    point.y = y + temp.y;
    return point;
}
 
bool Point::operator ==(Point temp)
{
    if(x == temp.x && y == temp.y)
        return true;
    else
        return false;
}
0
1 / 1 / 0
Регистрация: 31.01.2020
Сообщений: 148
03.04.2020, 09:09  [ТС]
Это очень помогло, но осталось ещё две ошибки:
Bash
1
2
3
4
5
6
7
8
utils.cpp: In member function ‘void Point::print()’:
utils.cpp:6:7: error: ‘cout’ is not a member of ‘std’
  std::cout<<"("<<x<<";"<<y<<")"<<std::endl;
       ^~~~
utils.cpp:6:7: note: suggested alternative: ‘copy’
  std::cout<<"("<<x<<";"<<y<<")"<<std::endl;
       ^~~~
       copy
0
518 / 410 / 188
Регистрация: 08.04.2013
Сообщений: 1,750
03.04.2020, 09:10
Лучший ответ Сообщение было отмечено lukinegor как решение

Решение

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
#ifndef UTILS_H
#define UTILS_H
#include <iostream>
 
class Point
{
    public:
        int x = 0;
        int y = 0;
        // Конструктор
        Point(){};
        Point(int _x , int _y )  : x(_x), y(_y)  {};
       // void print();
       const Point operator +(const Point&) const;
       // Point operator +(Point temp);
       bool operator == (const Point&) const;
    private:
 
        bool permission = 0;
};
 
std::ostream &operator <<(std::ostream &output, Point point);
std::istream &operator >>(std::istream &input, Point &point);
#endif
utils.cpp
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
#include "utils.h"
 
 
const Point Point::operator +(const Point& p) const {
    return Point(x + p.x, y + p.y);
}
 
//Операции отношения
bool Point::operator == (const Point &p) const{
  return (x == p.x) && (y == p.y);
}
 
std::ostream &operator <<(std::ostream &output, Point point)
{
    output<<point.x<<" "<<point.y;
    return output;
}
 
std::istream &operator >>(std::istream &input, Point &point)
{
    input>>point.x>>point.y;
    return input;
 
}
0
1 / 1 / 0
Регистрация: 31.01.2020
Сообщений: 148
03.04.2020, 09:31  [ТС]
Большое спасибо за доработку!

Добавлено через 9 минут
marat_miaki
Зачем объявлять пустой конструктор, если по дефолту такой же стоит?

Добавлено через 9 минут
Спасибо всем! Ту оставшуюся сам дорешал.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.04.2020, 09:31
Помогаю со студенческими работами здесь

Даны три файла в 3х разных кодировках, перевести текст в Windows-1251 и записать в один файл
Даны три файла в 3х разных кодировках, перевести текст в Windows-1251 и записать в один файл. В сущности я понимаю как это сделать...

Превратить один абзац в несколько
Добрый день! Создал несколько строк, перенося их с помощью Shift+Enter. Теперь возникла необходимость создать маркированный список....

Один iso образ превратить в 2
Добрый день! Ситуация следующая, сделал самостоятельно образ windows XP, напихал туда дрова для ноута, программы которые нужны будут,...

Построить три класса, один базовый и три потомка
Построить три класса (базовый и 3 потомка), описывающих некоторых хищных животных (один из потомков), всеядных(второй потомок) и травоядных...

Ввести три множества через один файл и найти множества их объединения и пересечения
Нужно ввести три множества через один файл и найти множества их объединения и пересечения.(желательно с процедурой ввода множества) ...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача №1: при указании работ (справочник РаботыПоРемонтуСпецтехники),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru