Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 24.12.2017
Сообщений: 39
1

Ошибки в раздельной компиляции

19.09.2018, 09:27. Просмотров 907. Ответов 4
Метки нет (Все метки)

Возникла ошибка при компиляции,
Ошибка C3861 spisbyauth: идентификатор не найден


Заголовочный файл.
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
//Book.h
#ifndef Book_H
#define Book_H
using namespace std;
 
class BooksClass {
    char author[50];
    char name[50];
    char publish[50];
    int year;
    int pages;
    int n;
    BooksClass *spis;
 
public:
    BooksClass();//конструктор класса 
    void show();//метод класса 
    char *getauthor();
    char *getpublish();
    int getyear();
    void spisbyyear(BooksClass spis[], BooksClass n);
    void spisbyauth(BooksClass spis[], BooksClass n);
    void spisbypublish(BooksClass spis[], BooksClass  n);
 
};
#endif
Файл функций.
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
53
54
55
56
57
58
59
60
//main1.cpp
#include<iostream>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
#include <tchar.h>
#include "Book.h"
using namespace std;
 
void spisbyyear(BooksClass spis[], int n);
void spisbyauth(BooksClass spis[], int n);
void spisbypublish(BooksClass spis[], int n);
 
char *BooksClass::getauthor() { return author; }//метод класса
char *BooksClass::getpublish() { return publish; }
int BooksClass::getyear() { return year; }
BooksClass::BooksClass()//конструктор класса 
{
    cout << "-/-/-/---------------/***/-----------------/-/-/-" << endl << endl;
    cout << "Автор книги: "; cin >> author;
    cout << "Название книги: "; cin >> name;
    cout << "Издательство: "; cin >> publish;
    cout << "Год издания: "; cin >> year;
    cout << "Количество страниц: "; cin >> pages;
}
 
void BooksClass::show()//метод класса
{
 
    cout << endl;
    cout << author << "\t";
    cout << name << "\t";
    cout << publish << "\t";
    cout << year << "\t";
    cout << pages << "\t";
}
 
void spisbyyear(BooksClass spis[], int n)
{
    int needyear;
    cout << "Введите год издания:";  cin >> needyear;
    for (int i = 0; i < n; i++)
        if (spis[i].getyear() > needyear) spis[i].show();
}
 
void spisbyauth(BooksClass spis[], int n)
{
    char needauth[50];
    cout << "Введите автора:";  cin >> needauth;
    for (int i = 0; i < n; i++)
        if (strcmp(spis[i].getauthor(), needauth) == 0) spis[i].show();
}
 
void spisbypublish(BooksClass spis[], int n)
{
    char needpublish[50];
    cout << "Введите автора:";  cin >> needpublish;
    for (int i = 0; i < n; i++)
        if (strcmp(spis[i].getpublish(), needpublish) == 0) spis[i].show();
}
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
#include<iostream>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
#include <tchar.h>
#include "Book.h"
 
using namespace std;
int  main()
{
    setlocale(LC_ALL, "Russian");
    BooksClass *spis;
    int n;
    cout << "Введите количество книг: "; cin >> n;
    spis = new BooksClass[n];
 
 
    cout << endl << "-/-/-/------------/***/--------------/-/-/-" << endl << "-/-/-/------------/***/--------------/-/-/-" << endl;
    cout << "СПИСОК КНИГ, ВЫПУЩЕННЫХ ПОСЛЕ ЗАДАННОГО ГОДА" << endl;
    spisbyyear(spis, n);
    cout << endl << "-/-/-/------------/***/--------------/-/-/-" << endl << "-/-/-/------------/***/--------------/-/-/-" << endl;
    cout << "СПИСОК КНИГ ЗАДАННОГО АВТОРА" << endl;
    spisbyauth(spis, n);
    cout << endl << "-/-/-/------------/***/--------------/-/-/-" << endl << "-/-/-/------------/***/--------------/-/-/-" << endl;
    cout << "СПИСОК КНИГ ЗАДАННОГО ИЗДАТЕЛЬСТВА" << endl;
    spisbypublish(spis, n);
    cout << endl << endl;
    delete[] spis;
    system("Pause");
    return 0;
 
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.09.2018, 09:27
Ответы с готовыми решениями:

Реализация раздельной компиляции
Здравствуйте! Я самоучка поэтому я... Я облазил кучу различных источников, но понял...

Порядок раздельной компиляции 3 файлов
Что-то не пойму, объясните мне на пальцах, как откомпилировать три файла (1 заголовочный) вместе....

Заголовочный файл или Механизм раздельной компиляции
Здравствуйте в данный момент я изучаю C++. Среда разработки Visual Studio 2010 Столкнулся с...

Не видно определений функций при раздельной компиляции
Описал класс и его наследника в заголовочном файле; самые громоздкие определения функций вынес в...

4
Заблокирован
19.09.2018, 09:44 2
У тебя в заголовочном файле не задекларированы необходимые функций. Только методы класса. Мне кажется, ты не до конца разобрался, что же тебе нужно: отдельная функция, или метод.
0
0 / 0 / 0
Регистрация: 24.12.2017
Сообщений: 39
19.09.2018, 10:06  [ТС] 3
не подскажите, как будет правильно?
0
Заблокирован
19.09.2018, 10:10 4
Лучший ответ Сообщение было отмечено AlexejDrozdov как решение

Решение

Убрать методы из класса и переместить объявления функций
C++
1
2
3
void spisbyyear(BooksClass spis[], int n);
void spisbyauth(BooksClass spis[], int n);
void spisbypublish(BooksClass spis[], int n);
в заголовочный файл.
0
0 / 0 / 0
Регистрация: 24.12.2017
Сообщений: 39
19.09.2018, 10:13  [ТС] 5
Большое спасибо, теперь нормально.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.09.2018, 10:13

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Ошибка сборки при раздельной компиляции шаблонной функции
Помогите с ошибкой, никак не могу найти решение #pragma once #include &lt;iostream&gt; #include...

Как создать объект класса? ПРоблемма из-за раздельной компиляции
Есть 4 файла engine.h - базовый класс engine.cpp - реализация методов базового класса car.h -...

Нюансы раздельной компиляции: где и что лучше и правильнее размещать?
Здравствуйте! Допустим, я хочу написать интерфейс класса в h-файле, а его реализацию в...

При раздельной компиляции не работает перегрузка операторов ввода-вывода
разделил программу и при компиляции компилятор ругается на объявление перегрузки операторов ввода...


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

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

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