Один из способов сделать это - использовать функтор. Вот простой пример:
#include <iostream>
class counter
{
public:
unsigned operator()(unsigned m, unsigned n)
{
// increment the count on every iteration
++count;
// rest of the function
if (m == 0)
{
return n + 1;
}
if (n == 0)
{
return operator()(m - 1, 1);
}
return operator()(m - 1, operator()(m, n - 1));
}
std::size_t get_count() const
{
return count;
}
private:
// call count
std::size_t count = 0;
};
int main()
{
auto f = counter();
std::cout << "Result: " << f(4, 0) << "\nNumber of calls: " << f.get_count() << std::endl;
return 0;
}
Вывод:
Result: 13
Number of calls: 107
Поскольку счет хранится в самом объекте, пользователь не может перезаписать его.
Похоже, что это - довольно интенсивный процесс.
Сначала установите Локальное свойство Копии ссылки на ложь так, чтобы .dlls не были скопированы в bin\Debug папку.
Затем создайте assemblyBinding\probing элемент в своем app.config, чтобы дать времени выполнения команду искать dlls в папке Lib
Затем создайте действие постсборки для копирования необходимого dlls в \bin\Debug\Lib папку.