我编写的代码如下所示:

template<typename CocoaWidget>
class Widget : boost::noncopyable
{
private:
  CocoaWidget* mCocoaWidget;

public:
  Widget()
  {
    mCocoaWidget = [[CocoaWidget alloc] init];
  }

  // ...
};

class Button : Widget<NSButton>
{
  // ...
};

但这不起作用,因为 Mac Dev Center 说:



那么我现在应该怎么做最好呢?

最佳答案

你确定你不能这样做(你有没有试过)?

Mac Dev Center 的引用说你不能在模板中声明一个 Objective-C 类。然而,你所做的只是在模板中声明一个指向 Objective-C 对象的指针——完全不同的事情,我看不出为什么不应该允许它的原因(尽管我从未尝试过) )。

关于c++ - C++ 中模板的替代方案,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2265022/

10-11 18:59