Исполняемый код в классе C ++ - PullRequest
0 голосов
/ 26 ноября 2011

Мне нужно выполнить код в определении класса в C ++.У меня есть макрос, чтобы добавить метод к указателю на функцию после определения метода.Он расширяется до вызова std :: map.insert, который необходимо выполнить в определении (подумайте о том, как Ruby выполняет код в определениях классов).После расширения макроса определение класса может выглядеть примерно так:

bindings.insert(pair<char, ReturnType (*)(FirstArgument, SecondArgument)>("theFunction",&theFunction));

Будет ли это выполняться в определении?

Ответы [ 3 ]

2 голосов
/ 26 ноября 2011

Вам нужно использовать глобал, его конструктор будет выполняться во время инициализации программы.

См., Например, эти вопросы и эти , чтобы узнать, как обеспечить выполнение map.insert до тех пор, пока карта не будет построена.

0 голосов
/ 26 ноября 2011

Вы можете поместить это в конструктор.

0 голосов
/ 26 ноября 2011

Нет, вы не можете иметь исполняемый код вне тела функции в объявлении класса. (если я вас правильно понимаю).

В какой момент вы ожидаете его выполнения?

...