我编写的代码如下所示:
template<typename CocoaWidget>
class Widget : boost::noncopyable
{
private:
CocoaWidget* mCocoaWidget;
public:
Widget()
{
mCocoaWidget = [[CocoaWidget alloc] init];
}
// ...
};
class Button : Widget<NSButton>
{
// ...
};
但这行不通,因为 Mac 开发中心说:
Objective-C classes, protocols, and categories cannot be declared inside a C++ template
那么我现在最好做什么呢?
最佳答案
你确定你不能这样做(你试过了吗)?
来自 Mac 开发中心的引述说您不能在模板中声明 Objective-C 类。然而,您所做的只是在模板内声明一个指向 Objective-C 对象的指针——完全不同的事情,我看不出有什么理由不应该这样做允许(虽然我从未尝试过)。
关于c++ - C++ 模板的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2265022/