您好,我正在尝试转发声明 cv::Mat 类,但我无法让它工作。它给出了消息字段“frame”的类型不完整.
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;
};
然后您可以实例化cv::Mat
拥有者为unique_ptr
在实施文件中。
请注意,引用也可以与前向声明一起使用,但这里不太可能需要引用语义。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)