Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Циклическое подключение 
V
    Опции темы
OKaDO
Дата 29.10.2007, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 28.6.2005

Репутация: нет
Всего: нет



Всем привет. Нужно написать класс хранение и класс заполнения так что бы класс заполнения заполнял постепенно класс хранения, т.е. записывал по одному элементу. Создал примерный код, но что-то тут с подключением творится.  smile  Никак разобраться не могу  smile , может кто, что подскажет

файл main.cpp:
Код


#include "stdafx.h"
#include "A.h"

#include <iostream>
using namespace std;

int main()
{
    A a;
    a.fill();

    for( unsigned int i=0; i<a.vec.size(); i++)
    {
        cout << a.vec[i] << endl;
    }
    return 0;
}



Файл A.h:
Код

#ifndef A_H
#define A_H

#include "B.h"
#include <vector>
using namespace std;


class A
{
public:
    A(){}
    void Add(int el)
    {
        vec.push_back(el);
    }
    void fill()
    {
        b.fill(this);
    }

    vector<int> vec;
private:
    B b;
};

#endif



файл B.h:
Код

#ifndef B_H
#define B_H

#include <vector>
#include "A.h"
using namespace std;

class B
{
public:
    B(){}

    void fill(A* pointer)
    {
        for(int i=0; i<10; i++)
            pointer->Add(i);
    }
};

#endif


Выдает такую ошибку: 
Код

Error    1    error C2061: syntax error : identifier 'A'    d:\programming\opit_include\opit_include\b.h    13    
Error    2    error C2065: 'pointer' : undeclared identifier    d:\programming\opit_include\opit_include\b.h    16    
Error    3    error C2227: left of '->Add' must point to class/struct/union/generic type    d:\programming\opit_include\opit_include\b.h    16    
Error    4    error C2660: 'B::fill' : function does not take 1 arguments    d:\programming\opit_include\opit_include\a.h    19    




PM MAIL   Вверх
Lazin
Дата 29.10.2007, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 41
Всего: 154



ты в файле A.h подключаешь файл B.h, 
который подключает файл A.h...
из за этого один из классов не виден


PM MAIL Skype GTalk   Вверх
JackYF
Дата 29.10.2007, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



OKaDO, циклическое подключение невозможно. По сему:


Цитата(OKaDO @  29.10.2007,  15:50 Найти цитируемый пост)
void fill(A* pointer)
    {
        for(int i=0; i<10; i++)
            pointer->Add(i);
    }

реализацию метода выносим в .cpp


Цитата(OKaDO @  29.10.2007,  15:50 Найти цитируемый пост)
#include "A.h"

а вместо этого в файла B.h делаем

Цитата

class A;



--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
OKaDO
Дата 29.10.2007, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 28.6.2005

Репутация: нет
Всего: нет



JackYF, спасибо. Воспользовался советом и все заработало. smile
PM MAIL   Вверх
JackYF
Дата 29.10.2007, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



OKaDO, пометь тему решённой.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0483 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.