gpt4 book ai didi

c++ - 前向声明 cv::Mat

转载 作者:太空狗 更新时间:2023-10-29 19:46:07 35 4
gpt4 key购买 nike

您好,我正在尝试转发声明 cv::Mat 类,但我无法让它工作。它给出消息字段“框架”的类型不完整

OpenGlImpl.h

namespace cv {
class Mat;
}

class OpenGLImpl {

private:
cv::Mat frame;

};

我应该如何正确转发声明?

最佳答案

您不能在此处使用前向声明。编译器需要定义 cv::Mat 才能成为 OpenGLImpl 的数据成员。

如果你想避免这个约束,你可以让 OpneGLImpl 持有一个指向 cv::Mat 的(智能)指针:

#include <memory>

namespace cv {
class Mat;
}

class OpenGLImpl {

private:
std::unique_ptr<cv::Mat> frame;

};

然后您可以在实现文件中实例化 unique_ptr 所拥有的 cv::Mat

请注意,引用也可以与前向声明一起使用,但您不太可能在这里需要引用语义。

关于c++ - 前向声明 cv::Mat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17467777/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com