Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.09.2010, 22:13   #1
jec
Пользователь
 
Регистрация: 04.09.2010
Сообщений: 42
Восклицание работа с классами

всем привет
вот сижу пытаюсь написат нормальный класс но ничего не получается
уже сколько свего перепробовал

вот в чем собственно проблема:

есть некий класс который обробатывает инфу полученную от пользователя и на ее основании делает работу дальше
но мне как то надо сделать что то типа такого:
есть класс я пишу в main (не в классе) функцию
эта функция передаеться методу класса и он с ней работает
я очень долго искал ответ на вопрос и в конце вроде нашел
вот он:
Application.h
Код:

Код:
class Application
{
     virtual void Loop() {}
};
тоесть как я понял в main должно быть так
main.cpp
Код:
Код:
Application* pApp = new Application();
pApp->Loop();
    {
        printf("hello\n");
    }
а в другом файле
Application.cpp
Код:

Код:
Application::Application()
{
    Loops = true;
}

Application::~Application()
{
}

void Application::Run()
{
    Loops = true;
    while(Loops == true)
    {
        Loop();
    }
}
по идее должно бесконечно много раз написать слово hello
но ничего не происходит
почему-то
программа работает но ничего не выполняется

как исправить?? или каким способом добиться подобного?? в функции Loop будет много сточек позже
и еще виндосовские фишки не предлагайте
jec вне форума Ответить с цитированием
Старый 04.09.2010, 22:31   #2
Syuf
Форумчанин
 
Аватар для Syuf
 
Регистрация: 02.02.2010
Сообщений: 599
По умолчанию

Я бы предложил цикл while, но не рискну попробовать объяснить его трудный синтаксис...
Цитата:
Application* pApp = new Application();
pApp->Loop();
{
printf("hello\n");
}
Эта программа заходит в ваш луп, который ничего не делает, печатает слово хело и идет дальше. Что вы пытались этим добиться я, честно говоря, не понял.
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
Syuf вне форума Ответить с цитированием
Старый 04.09.2010, 22:34   #3
jec
Пользователь
 
Регистрация: 04.09.2010
Сообщений: 42
По умолчанию

Цитата:
Сообщение от Syuf Посмотреть сообщение
Я бы предложил цикл while, но не рискну попробовать объяснить его трудный синтаксис...

Эта программа заходит в ваш луп, который ничего не делает, печатает слово хело и идет дальше. Что вы пытались этим добиться я, честно говоря, не понял.
вот смотрите
есть этот луп в нем всякие функции, они передаются в рун и там происходит цикл
по идее должно много раз печатать, но не печатает
как исправить??
jec вне форума Ответить с цитированием
Старый 04.09.2010, 22:35   #4
Impuls1989
Форумчанин
 
Аватар для Impuls1989
 
Регистрация: 16.08.2008
Сообщений: 276
По умолчанию

А дружественные функции что? Отменили?
Искусственный интеллект - фигня по сравнению с естественной глупостью
Impuls1989 вне форума Ответить с цитированием
Старый 04.09.2010, 22:40   #5
jec
Пользователь
 
Регистрация: 04.09.2010
Сообщений: 42
По умолчанию

Цитата:
Сообщение от Impuls1989 Посмотреть сообщение
А дружественные функции что? Отменили?
всмысле?? если имеете ввиду написать эту функуию в Applicatiob.cpp то это не подходит
jec вне форума Ответить с цитированием
Старый 04.09.2010, 22:42   #6
blob
Пользователь
 
Регистрация: 24.08.2010
Сообщений: 34
По умолчанию

Пардон конечно, но вам серьёзно нужно почитать матчасть. Из того, что Вы написали, нельзя ничего понять. Это работать вообще не может, так как лишено логики.
Первое.. Описание класса Application
Код:
////////////////Application.h
class Application
{
     private:
           bool Loops;
     public:
           Application();
           void Loop(); // virtual без наследования зачем ? Если только есть
                            //   virtual Loop(){} - пустое тело метода. Эффект -ноль
           void Run();
           virtual ~Application();
};
/////////////////Application.cpp 
Application::Application()
{
    Loops = true;
}

Application::~Application()
{
}

void Application::Run()
{
    Loops = true; // ? в конструкторе тогда зачем? Ну может быть...
    while(Loops)
        Loop();
}
void Application::Loop()
{
     printf("hello\n");
     if(условие) Loops=false; // иначе зацикливание
}
//////////////////main.cpp 
....
Application* pApp = new Application();
pApp->Run();
....

Последний раз редактировалось blob; 04.09.2010 в 22:44.
blob вне форума Ответить с цитированием
Старый 04.09.2010, 22:46   #7
Impuls1989
Форумчанин
 
Аватар для Impuls1989
 
Регистрация: 16.08.2008
Сообщений: 276
По умолчанию

Код:
class Application
{
friend void Loop(); 
     private:
           bool Loops;
     public:
           Application();
           void Run();
           virtual ~Application();
};
void Loop()
{
   cout<<"HelloWorld"<<endl;
   Loops = false;
}
А дальше реализовывайте свой Loop вне класса... Он будет иметь доступ к приватным переменным класса.
Искусственный интеллект - фигня по сравнению с естественной глупостью
Impuls1989 вне форума Ответить с цитированием
Старый 04.09.2010, 22:47   #8
jec
Пользователь
 
Регистрация: 04.09.2010
Сообщений: 42
По умолчанию

Цитата:
Сообщение от blob Посмотреть сообщение
Пардон конечно, но вам серьёзно нужно почитать матчасть. Из того, что Вы написали, нельзя ничего понять. Это работать вообще не может, так как лишено логики.
Первое.. Описание класса Application
Код:
////////////////Application.h
class Application
{
     private:
           bool Loops;
     public:
           Application();
           void Loop(); // virtual без наследования зачем ? Если только есть
                            //   virtual Loop(){} - пустое тело метода. Эффект -ноль
           void Run();
           virtual ~Application();
};
/////////////////Application.cpp 
Application::Application()
{
    Loops = true;
}

Application::~Application()
{
}

void Application::Run()
{
    Loops = true; // ? в конструкторе тогда зачем? Ну может быть...
    while(Loops)
        Loop();
}
void Application::Loop()
{
     printf("hello\n");
     if(условие) Loops=false; // иначе зацикливание
}
//////////////////main.cpp 
....
Application* pApp = new Application();
pApp->Run();
....
так луп у меня же лежит совсем в другом файле
он в main.cpp
и там мне надо написать содержимое метода луп
а так я знаю что можно написать но так не подходит
jec вне форума Ответить с цитированием
Старый 04.09.2010, 22:52   #9
jec
Пользователь
 
Регистрация: 04.09.2010
Сообщений: 42
По умолчанию

вот весь код всего проекта

Код:
#include "Application.h"
#include <cstdlib>

int main(int argc, char **argv)
{
    Application* pApp = new Application();

    if(pApp->Init() == false)
    {
        return -1;
    }
    pApp->Run();

    void Loop()
    {
        printf("hello\n");
    }

    pApp->Quit();

    if(pApp)
    {
        delete pApp;
        pApp = NULL;
    }
    return 0;
}
Код:
#include "Application.h"

Application::Application()
{
    Loops = true;
}

Application::~Application()
{
}

bool Application::Init()
{
    return true;
}

void Application::Run()
{
    Loops = true;
    while(Loops == true)
    {
        Loop();
    }
}

void Application::Quit()
{
    Loops = false;
}
Код:
#ifndef APPLICATION_H_INCLUDED
#define APPLICATION_H_INCLUDED

class Application
{
        friend void Loop();
private:
    bool Loops;

public:
    Application();
    ~Application();

    bool Init();
    void Run();


    void Quit();
};

#endif
вот
и не работает
может теперь представите как я хочу сделать
jec вне форума Ответить с цитированием
Старый 04.09.2010, 22:52   #10
Impuls1989
Форумчанин
 
Аватар для Impuls1989
 
Регистрация: 16.08.2008
Сообщений: 276
По умолчанию

Господину нужно реализовать нечто на подобие Events-ов delphi?
Искусственный интеллект - фигня по сравнению с естественной глупостью
Impuls1989 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с классами Superlotles Общие вопросы C/C++ 6 16.06.2010 17:15
С++: работа с классами MR_Andrew Общие вопросы C/C++ 23 01.04.2010 23:46
Работа с классами (Delphi_7) Innga Помощь студентам 4 14.01.2010 16:20
Работа с классами и объектами Shavminator Общие вопросы Delphi 7 18.12.2009 04:11
работа с классами, но трабл в функциях-методах aka_faith Общие вопросы C/C++ 9 14.06.2009 22:26