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

Многофайловый код - C++

Восстановить пароль Регистрация
 
Wollen
3 / 3 / 1
Регистрация: 19.08.2013
Сообщений: 26
23.08.2013, 14:44     Многофайловый код #1
Укажите, что я делаю не правильно и как исправить. Ошибки, которые выдаёт компилятор: invalid use of incomplete type 'struct List' и forward declaration of 'struct List'.

main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <fstream>
#include <conio.h>
#include "MyListClass5A.h"
using namespace std;
void Action(List& abc){
    abc.Write();
    ...
}
int main(){
    List abc;
    Action(abc);
    ...
}
MyListClass5A.h
C++
1
2
3
4
5
#ifndef MYLISTCLASS5A_H_INCLUDED
#define MYLISTCLASS5A_H_INCLUDED
struct t_Item;
class List;
#endif // MYLISTCLASS5A_H_INCLUDED
MyListClass5A.cpp
C++
1
2
3
4
5
6
7
#include "MyListClass5A.h"
struct t_Item{
   ...
};
class List{
    ...
};
Кликните здесь для просмотра всего текста
Разделение кода на несколько файлов Эту тему читал. Делал по ней первым способом.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.08.2013, 14:44     Многофайловый код
Посмотрите здесь:

Код написан в Dev C. Не работает в Visual. Как нужно переделать код? C++
Многофайловый программы, переопредиление множественная инициализация C++
C++ Многофайловый проект: высчитать значение заданной функции с определенным интервалом
C++ задача(есть код программы, нужно объяснить её программный код. )
Собрать многофайловый проект в Turbo C++ (ошибка Linker error Undefined symbol f (int) in module) C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11828 / 6807 / 769
Регистрация: 27.09.2012
Сообщений: 16,878
Записей в блоге: 2
Завершенные тесты: 1
23.08.2013, 14:47     Многофайловый код #2
Цитата Сообщение от Wollen Посмотреть сообщение
C++
1
2
struct t_Item; 
class List;
Это Forward declaration.
Здесь нужно полное описание классов. А в cpp уже реализацию писать.
Wollen
3 / 3 / 1
Регистрация: 19.08.2013
Сообщений: 26
23.08.2013, 15:04  [ТС]     Многофайловый код #3
Цитата Сообщение от Croessmah Посмотреть сообщение
Это Forward declaration.
Здесь нужно полное описание классов. А в 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
class List{
    t_Item* end;
    t_Item* items;
    unsigned count;
    public:
    List(){
        items=0;
        end=0;
        count=0;
    }
    ~List(){
        Clear();
    }
    void Clear(){
        for(unsigned i=0;i<count;++i){
            DelItem(0);
        }
    }
    unsigned GetCount(){
        return count;
    }
    ...
};
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11828 / 6807 / 769
Регистрация: 27.09.2012
Сообщений: 16,878
Записей в блоге: 2
Завершенные тесты: 1
23.08.2013, 15:11     Многофайловый код #4
http://valera.asf.ru/cpp/book/c13.html
Wollen
3 / 3 / 1
Регистрация: 19.08.2013
Сообщений: 26
23.08.2013, 15:54  [ТС]     Многофайловый код #5
Цитата Сообщение от Croessmah Посмотреть сообщение
Добавил полное описание класса.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//MyListClass5A.h
#ifndef MYLISTCLASS5A_H_INCLUDED
#define MYLISTCLASS5A_H_INCLUDED
struct t_Item;
class List{
    public:
    List();
    ~List();
    unsigned GetCount();
    void Add(char val);
    void Clear();
    void DelItem(unsigned n);
    void InsItem(unsigned n,char c);
    void Write(bool reverse=0);
    void WriteFile(ofstream& fileName);
    void ChangeNum();
    void DelNum();
    void ChangeTriple();
    void ChangeDouble();
    void Enter(unsigned N);
};
#endif // MYLISTCLASS5A_H_INCLUDED
Теперь ругается: "error: 'ofstream' has not been declared". У меня ofstream объявлен в функции main(). Пробовал добавлять #include <fstream> и в заголовчный файл - не помогает.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
23.08.2013, 16:01     Многофайловый код #6
Цитата Сообщение от Wollen Посмотреть сообщение
Теперь ругается: "error: 'ofstream' has not been declared"
Наверное, показывает, где нет объявления?
Wollen
3 / 3 / 1
Регистрация: 19.08.2013
Сообщений: 26
23.08.2013, 17:41  [ТС]     Многофайловый код #7
Цитата Сообщение от alsav22 Посмотреть сообщение
Наверное, показывает, где нет объявления?
Показывает, что нет объявления в заголовочном файле в строчке
C++
1
void WriteFile(ofstream& fileName);
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
23.08.2013, 17:46     Многофайловый код #8
Если добавить #include <fstream> и так написать:
C++
1
void WriteFile(std::ofstream& fileName);
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.08.2013, 18:01     Многофайловый код
Еще ссылки по теме:

Многофайловый проект с функциями в классе C++
C++ Вычисление площади круга (многофайловый проект)
Многофайловый проект, избавить от засорения инициализации объектов функцию main C++

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

Или воспользуйтесь поиском по форуму:
Wollen
3 / 3 / 1
Регистрация: 19.08.2013
Сообщений: 26
23.08.2013, 18:01  [ТС]     Многофайловый код #9
Цитата Сообщение от alsav22 Посмотреть сообщение
Если добавить #include <fstream> и так написать:
C++
1
void WriteFile(std::ofstream& fileName);
спасибо
Yandex
Объявления
23.08.2013, 18:01     Многофайловый код
Ответ Создать тему
Опции темы

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