防止使用第三方库 class

Prevent usage of a third-party base class

我已经围绕 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 的方法(例如通过编译器错误或被视为错误的警告)。

你不能让一些其他代码无法使用你无法控制的东西。而 C++ 标准库是您无法控制的东西。