0

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が機能しない理由について、微妙な点が欠けています。

4

0 に答える 0