Запретить использование стороннего базового класса - PullRequest
1 голос
/ 10 января 2020

Я реализовал свою собственную оболочку около std::chrono::steady_clock и хотел бы запретить любому другому разработчику использовать оригинал:

#include <iostream>
#include <chrono>

namespace my_chrono {
    class MyClock : public std::chrono::steady_clock {
        // stuff here...
    };
}

int main()
{
    auto my_now = my_chrono::MyClock::now();                // this should compile
    auto chrono_now = std::chrono::steady_clock::now();     // this should be prevented

    std::cout << my_now.time_since_epoch().count() << ", " << chrono_now.time_since_epoch().count() << std::endl;

    return 0;
}

К сожалению, я не могу найти способ заставить использование MyClock сверх steady_clock (например, с помощью ошибок компилятора или предупреждений, которые рассматриваются как ошибки).

1 Ответ

3 голосов
/ 10 января 2020

Вы не можете сделать невозможным, чтобы какой-то другой код не мог использовать то, что вы не можете контролировать. А стандартная библиотека C ++ - это то, что вы не можете контролировать.

...