我有一个代码:
namespace My
{
#define sptr std::shared_ptr;
}
它被用在很多地方。现在我已经将这段代码作为库包含到 qt 项目中,但它无法加载,因为它在某处使用 sptr
作为变量名。
我可以修改 Qt header 并重命名变量,但这在可移植性方面并不好。解决这个问题的最佳方法是什么? typedef
不能与模板一起使用。我知道如何破解模板结构,但我仍然需要用它来修改我的代码。
最佳答案
namespace ns {
template<typename T>
using sptr = std::shared_ptr<T>;
}
另请参阅@Kerrek SB 对有关此特定用例的问题的评论。
关于c++ - 定义 vs 命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12239133/