std::make_shared<T>是C++中用于创建shared_ptr的函数模板。它可以用于动态分配一个类型为T的对象,并返回一个指向该对象的shared_ptr。然而,有时候我们可能希望禁止使用std::make_shared<T>,这可能是因为某些特定的需求或限制。
要阻止std::make_shared<T>的使用,可以采取以下几种方法:
class T {
private:
T() {} // 私有构造函数
friend std::shared_ptr<T> std::make_shared<T>(); // 声明友元函数
};
template<typename T, typename... Args>
std::shared_ptr<T> my_make_shared(Args&&... args) {
// 添加必要的限制或逻辑
if (some_condition) {
throw std::runtime_error("Cannot create shared_ptr using my_make_shared");
}
return std::shared_ptr<T>(new T(std::forward<Args>(args)...));
}
以上是阻止std::make_shared<T>使用的几种方法,具体选择哪种方法取决于具体的需求和限制。在实际应用中,根据项目的要求和团队的约定来选择合适的方法。
北极星训练营
北极星训练营
北极星训练营
腾讯云GAME-TECH沙龙
高校公开课
北极星训练营
高校公开课
云+社区沙龙online第5期[架构演进]
Techo Day
领取专属 10元无门槛券
手把手带您无忧上云