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

Реализовать подстановку кода с помощью препроцессора - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Typedef для функций http://www.cyberforum.ru/cpp-beginners/thread1801818.html
Здравствуйте! В книге Страуструпа в качестве примера приводится typedef для указателей на функции например: typedef void(*SIG_TYP) (int) , typedef int (*CFT)(const void*, const void*) Не совсем понятно на что влияют выделеные аргументы. Если они нужны, то почему я потом могу сделать следующее объявление: SIG_TYP a(void x, char y); И компилятор это скомпилит без ошибок.
C++ Что не так с этими указателями? Всем привет, прошу помощи разобраться в коде. Недавно начал изучать C++ по книге Лафоре. В главе с указателями есть пример со связными списками. Вот его структура: struct node { int data; node* next; }; class linklist{ private: node* first; public: http://www.cyberforum.ru/cpp-beginners/thread1801791.html
C++ Прервать цикл из цикла, вложенного в него
Приветствуют. Собственно, вопрос в названии темы. for(int i = 1; i <= 10; i++) for(int j = 1; j <= 5; j++) { if(/* здесь условие выхода из обоих циклов */) { /* как выйти сразу из 2-х циклов? */ /* break даст выход только из цикла j */ } }
C++ Тест. Подскажите где ошибка
1 ответ не правильный. Подскажите где ошибка.
C++ Typedef thiscall метода с переменным числом аргументов http://www.cyberforum.ru/cpp-beginners/thread1801756.html
Добрый день. Хочу что то типа такого typedef void *(__thiscall *tThisCall)(void *, ...); tThisCall method; //... method(object, arg1, arg2);
C++ Создание просто словаря, не выполняется поиск Пример взят из книги, но работать он не хочет. Проверял цикл for, выдает значение 012.(Не совсем понятно от куда что, ладно 2 цифры но их 3) Думаю что что то не так с if (!strcmp(a, word)), раньше не использовал strcmp с массивом. #include <iostream> #include <cstring> using namespace std; int main() подробнее

Показать сообщение отдельно
Cend
2 / 2 / 0
Регистрация: 25.02.2013
Сообщений: 100
02.09.2016, 12:10     Реализовать подстановку кода с помощью препроцессора
Есть множество классов:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class SomeClassName1 {
   ...
}
 
class SomeClassName2 {
   ...
}
 
...
 
class SomeClassName100 {
   ...
}
...
Для каждого нужно создать функцию со своим именем и передать указатель на нее в другую функцию:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//-------------------------------------------------------------
void* SomeClassName1_FUNC() {
    return new SomeClassName1();
}
RunFunc(SomeClassName1_FUNC, "SomeClassName1");
//-------------------------------------------------------------
void* SomeClassName2_FUNC() {
    return new SomeClassName2();
}
RunFunc(SomeClassName2_FUNC, "SomeClassName2");
//-------------------------------------------------------------
...
//-------------------------------------------------------------
void* SomeClassName100_FUNC() {
    return new SomeClassName100();
}
RunFunc(SomeClassName100_FUNC, "SomeClassName100");
//-------------------------------------------------------------
...
Можно ли это упростить до:
C++
1
2
3
4
5
RUN(SomeClassName1)
RUN(SomeClassName2)
...
RUN(SomeClassName100)
...
Сделал вот так:
C++
1
2
3
4
5
#define RUN(CLASSNAME) \
    void* CLASSNAME_FUNC() { \
        return new CLASSNAME(); \
    } \
RunFunc(CLASSNAME_FUNC, #CLASSNAME);
Но не работает. Подскажите, где ошибка?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 01:09. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru