防止使用第三方库 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++ 标准库是您无法控制的东西。
我已经围绕 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++ 标准库是您无法控制的东西。