【发布时间】:2014-01-16 16:03:53
【问题描述】:
我正在尝试使用 PImpl 习语在我的 Objective-C 项目中使用 <vector> 库。
我已经设法实现它,但它仅适用于 Int 类型,正如您在我的 .h 和 .mm 文件中看到的那样。
file.h
#import <Foundation/Foundation.h>
struct Vector_impl;
@interface MM_Matrix : NSObject
{
struct Vector_impl *MMVec;
}
@property unsigned rows, columns;
- (MM_Matrix *) initwith:(int) n and: (int) m;
- (long) size: (int) n;
file.mm
#import "MM_Matrix.h"
#include <vector>
struct Vector_impl
{
std::vector<std::vector<int>> matrix;
};
@implementation MM_Matrix : NSObject
- (MM_Matrix *) initwith:(int) n and:(int)m
{
[self setRows:n];
[self setColumns:m];
MMVec = new Vector_impl;
MMVec->matrix.resize(n);
for (int i=0; i<n; i++) {
MMVec->matrix[i].resize(m, 0);
}
return self;
}
- (long) size: (int) n
{
return MMVec->matrix[n].size();
}
@end
我想实现一个泛型类型(可能是模板?),就像您在 <vector> 库中所做的那样,但我不知道如何实现。
【问题讨论】:
-
您是在尝试实现一个通用的 object-c 类(例如,使用 NSNumber 而不是 int 作为您的objective-c 类)还是在尝试使用 C++ 模板?
-
@NonlinearIdeas 我想他想在
vector中模板化int。
标签: objective-c templates objective-c++ pimpl-idiom