Как указано выше, вам нужно использовать объект дважды:
(t.*t._processPtr.load())();
^ ^ ^----- load() because it's an atomic variable
| |---- this loads the function pointer stored inside of t
|------- actual Object to call the member function pointer on
Итак, вы закончите с этим:
int main(int argc, char** argv)
{
test t;
t._processPtr = &test::process;
(t.*t._processPtr.load())();
}
Оболочка разработки VS скрыта в меню «Пуск» (Visual Studio 2017->Visual studio Tools->VC
), и есть несколько вариантов на выбор.
Затем вы можете использовать командную строку для запуска cmake -G "Visual Studio 14 2015 Win64"
.
Если это сработает или нет, я не совсем уверен, потому что генератор будет искать ключи реестра для «Visual Studio 14 2015», чтобы определить правильный путь msbuild
. Но он не установлен, потому что вы используете visual studio community 2017
, который работает совершенно по-другому.
Поэтому, когда cmake
не удается найти msbuild
для VS14
, по умолчанию будет указано то, что находится на пути, и это будет msbuild
для VS 2017
.
Именно тогда вы узнаете, совместимо ли дополнение с cmake
VS14
проектами и наборами инструментов.
Может быть, надстройка - это просто VS14
наборы инструментов. Если это так, вы хотите сгенерировать проект VS17
и использовать опцию -T
, чтобы использовать набор инструментов VS14
.
Также Visual Studio и CMake называют msbuild
инструментом для сборки. Опция -T
- выбрать набор инструментов платформы, который является версией компилятора для использования.