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

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

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

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

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

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

Цитата:
Сообщение от Impuls1989 Посмотреть сообщение
Господину нужно реализовать нечто на подобие Events-ов delphi?
к сожалению дельфи знаю на уровне школьника =((
(тоесть там работа с массивами, ввод, вывод, процедуры не знаю ну и тд)
jec вне форума Ответить с цитированием
Старый 04.09.2010, 22:55   #12
Impuls1989
Форумчанин
 
Аватар для Impuls1989
 
Регистрация: 16.08.2008
Сообщений: 276
По умолчанию

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

public:
    Application();
    ~Application();

    bool Init();
    void Run();


    void Quit();
};
И что же выдает компилятор, когда Вы реализовываете вариант с friend-овой функцией?
Искусственный интеллект - фигня по сравнению с естественной глупостью
Impuls1989 вне форума Ответить с цитированием
Старый 04.09.2010, 22:56   #13
jec
Пользователь
 
Регистрация: 04.09.2010
Сообщений: 42
По умолчанию

Application.cpp||In member function ‘void Application::Run()’:|
Application.cpp|22|error: ‘Loop’ was not declared in this scope|
jec вне форума Ответить с цитированием
Старый 04.09.2010, 23:03   #14
Impuls1989
Форумчанин
 
Аватар для Impuls1989
 
Регистрация: 16.08.2008
Сообщений: 276
По умолчанию

А вы делали #include "модуль, где объявлен прототип функции Loop"?
Искусственный интеллект - фигня по сравнению с естественной глупостью
Impuls1989 вне форума Ответить с цитированием
Старый 04.09.2010, 23:04   #15
jec
Пользователь
 
Регистрация: 04.09.2010
Сообщений: 42
По умолчанию

я же писал весь код
конечно писал инклуд
jec вне форума Ответить с цитированием
Старый 04.09.2010, 23:05   #16
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Можете передавать функцию по указателю. Как-то так (мелких очепяток в ниженаписанном не исключаю):
Код:
void f(int a)
{
cout << a <<endl;
}

void g(void (*some_f)(int), int b)
{
some_f(b);
}

void h()
{
int A = 10;
void(*pFunc)(int) = &f;
g(pFunc, A);
}
Передали указателю pFunc на функцию типа void с одним аргументом int адрес функции f, передали этот указатель функции g, принимающей указатель на такую функцию вместе с еще одним int, выполнили g.
Результат - вывод числа "10".

P.S. Долго же я писал...))) Сколько постов успело появится)))
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же

Последний раз редактировалось Гром; 04.09.2010 в 23:07.
Гром вне форума Ответить с цитированием
Старый 04.09.2010, 23:05   #17
blob
Пользователь
 
Регистрация: 24.08.2010
Сообщений: 34
По умолчанию

friend надо... но это половина беды.
Всё это запускается в одной нитке и работать никак не будет.
pApp->Run() запускает цикл, который кончится только по вызову pApp->Quit().. а Quit() запускается в конце исполнения Run(). Если вам нужно, чтобы по запуску Run() класс работал отдельно от main до тех пор, пока вызовут Quit(), пишите мультитрэдное приложение. И описание Loop() внутри main() как-то тоже поясните пожалуйста.
blob вне форума Ответить с цитированием
Старый 04.09.2010, 23:10   #18
jec
Пользователь
 
Регистрация: 04.09.2010
Сообщений: 42
По умолчанию

Цитата:
Сообщение от blob Посмотреть сообщение
friend надо... но это половина беды.
Всё это запускается в одной нитке и работать никак не будет.
pApp->Run() запускает цикл, который кончится только по вызову pApp->Quit().. а Quit() запускается в конце исполнения Run(). Если вам нужно, чтобы по запуску Run() класс работал отдельно от main до тех пор, пока вызовут Quit(), пишите мультитрэдное приложение. И описание Loop() внутри main() как-то тоже поясните пожалуйста.
нет
после выполнения рана выполняется бесконеяный цикл выполняющий команды находящиеся в лупе
а луп он как бы вне класа, тело его пишеться пользователем и все что там написано оно будет выполнятся и как только выполнится то произойдет выход
jec вне форума Ответить с цитированием
Старый 04.09.2010, 23:18   #19
jec
Пользователь
 
Регистрация: 04.09.2010
Сообщений: 42
По умолчанию

нашел фишку одну

Код:
void Application::Run()
{
    Loops = true;
    while(Loops == true)
    {
        Loop();
        Loops = false;
    }
}
то тогда все пишется
НО! один раз =(
jec вне форума Ответить с цитированием
Старый 04.09.2010, 23:21   #20
Impuls1989
Форумчанин
 
Аватар для Impuls1989
 
Регистрация: 16.08.2008
Сообщений: 276
По умолчанию

Вот работающий код:
Код:
main.cpp:
#include "qtest.h"
#include "myHeader.h"

int main(int argc, char *argv[])
{
    QTest t;
    t.Start();
    return 0;
}

qtest.h:
#ifndef QTEST_H
#define QTEST_H

class QTest
{
    friend void TestFunction();
public:
    void Start();
};

#endif // QTEST_H

qtest.cpp:
#include "qtest.h"
#include "myHeader.h"

void QTest::Start()
{
    TestFunction();
}

myHeader.h:
#ifndef MYHEADER_H
#define MYHEADER_H

void TestFunction();

#endif // MYHEADER_H

myHeader.cpp:
#include "myHeader.h"
#include "qtest.h"
#include <iostream>
using namespace std;

void TestFunction()
{
    cout<<"HelloWorld"<<endl;
}
Код работает. Только что самолично проверил
Искусственный интеллект - фигня по сравнению с естественной глупостью
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