【发布时间】:2012-09-02 19:39:28
【问题描述】:
我有一个代码:
namespace My
{
#define sptr std::shared_ptr;
}
它被用在很多地方。现在我已将此代码作为库包含到 qt 项目中,但它无法加载,因为它在某处使用 sptr 作为变量名。
我可以修改 Qt 标头并重命名变量,但这在可移植性方面并不好。解决此问题的最佳方法是什么? typedef 不能与模板一起使用。我知道模板化结构的 hack,但我仍然需要用它修改我的代码。
【问题讨论】:
-
预处理器指令不受命名空间的约束。
-
@jeffamaphone 我知道。现在它给我带来了描述的问题。
-
auto p = std::make_shared<Foo>();。在 C++11 中,您想要明确地说“shared_ptr”的情况应该很少见。 -
@KerrekSB 是的,谢谢,我知道了。但现在它需要重写我的代码。而且我没有时间这样做;)
标签: c++ templates macros typedef