opaque 型の使用に関する同様の質問を見ましたが、サンプル コードがよくわかりません。
動作するコードがいくつかあります...いくつかの C++ データ オブジェクトがインスタンス変数としてコントローラーに格納されています。私は MVC に準拠し、これらすべてをコントローラーではなくモデル オブジェクトにプッシュしたいと考えています。
だから私が今持っているものは次のようになります:
@interface WinController : NSWindowController <NSWindowDelegate>
{
cv::Mat object;
}
- (void)setObject:(const cv::Mat&)newObject;
@end
@implementation
- (void)setObject:(const cv::Mat&)newObject
{
object = newObject;
}
@end
そして、このsetObject:
メソッドは別のクラスのメソッドによって呼び出されます:
- (void)constructObject
{
cv::Mat object = cv::Mat::zeros(3,3,CV_64F);
[myController setObject:object];
}
そこで、C++ オブジェクトをコントローラーからモデル クラスに移動します。と@interface
は@implementation
まったく同じです。コピーして別のクラスに貼り付けただけです。
constructObject:
メソッドは次のように変更されます。
- (void)constructObject
{
cv::Mat object = cv::Mat::zeros(3,3,CV_64F);
[myController.myModel setObject:object];
}
コンパイルすると、新しい警告が表示されます。
Instance method '-setObject:' not found. (return type defaults to 'id')
明らかに、方法#1が機能し、#2が機能しない理由について、微妙な点が欠けています。