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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Добавление объекта самого в конструкторы 
:(
    Опции темы
david_yu
Дата 7.2.2016, 23:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



возможно глупы вопроса, перехожу на программирование с Delphi на C++

Есть глобально созданый объект 
В нем реализован вектор:

class App
{
    private:
        std::vector<CustomObjectConsol*> flist; 
    public:
        void addobject(CustomObjectConsol *co)
        {
            flist.push_back(co);
        }
    };
    
App *ap = new App;
    
class CustomObjectConsol
{
    public:
        CustomObjectConsol()
        {
            ap->addobject(this);
        }

};

Как это можно реализовать?

Ошибка    C2027    использование неопределенного типа "App"
Ошибка    C2227    выражение слева от "->addobject" должно указывать на тип класса, структуры или объединения либо на универсальный тип
PM MAIL   Вверх
rudolfninja
Дата 7.2.2016, 23:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 341
Регистрация: 19.2.2013
Где: г. Минск

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



Вы когда объявляете класс, он не видит глобальных объектов.
То есть, в реализации класса нельзя ссылаться на внешние глобальные объекты.
В вашем случае надо в матод CustomObjectConsol передавать адрес App и использовать переданный параметр.
PM MAIL Skype   Вверх
math64
Дата 8.2.2016, 08:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

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



Код

// app.h
// Нужно предварительное объявление класса
class CustomObjectConsol;
class App
{
    private:
        std::vector<CustomObjectConsol*> flist; 
    public:
        void addobject(CustomObjectConsol *co);
    };
 // app.cpp
#include "app.h"
App *ap = new App;
void App::addobject(CustomObjectConsol *co)
{
    flist.push_back(co);
}
// customobjectconsol.h
#include "app.h"
class CustomObjectConsol
{
    public:
        CustomObjectConsol();
};
// customobjectconsol.cpp
#include "customobjectconsol.h"
CustomObjectConsol::CustomObjectConsol()
{
    ap->addobject(this);
}


PM   Вверх
david_yu
Дата 9.2.2016, 23:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



спасибо помогло... правда сделал так app.h и app.cpp - все нормально собралось 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


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

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


 




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


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

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