Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有一个代码:
namespace My { #define sptr std::shared_ptr; }
它被用在很多地方。现在我已经将此代码作为库包含到 qt 项目中,但它无法加载,因为它在某处sptr用作变量名。
sptr
我可以修改 Qt 标头并重命名变量,但这在可移植性方面并不好。解决此问题的最佳方法是什么?typedef不能与模板一起使用。我知道使用模板结构进行破解,但我仍然必须用它修改我的代码。
typedef
namespace ns { template<typename T> using sptr = std::shared_ptr<T>; }
另请参阅@Kerrek SB 对有关此特定用例的问题的评论。
您可以使用以下内容:
template<typename T> struct sptr : std::shared_ptr<T> { };
这是一个简单的std::shared_ptr. 这适用于 C++2003 和 C++11。
std::shared_ptr