嗨,我试图转发声明cv :: Mat类,但我不能让它工作.它给消息字段'frame'具有不完整的类型.
OpenGlImpl.h
namespace cv {
class Mat;
}
class OpenGLImpl {
private:
cv::Mat frame;
};
Run Code Online (Sandbox Code Playgroud)
我该如何正确地转发声明呢?
你不能在这里使用前瞻性声明.编译器需要具有定义,cv::Mat以使其成为数据成员OpenGLImpl.
如果你想避免这种约束,你可以拥有OpneGLImpl一个(智能)指针cv::Mat:
#include <memory>
namespace cv {
class Mat;
}
class OpenGLImpl {
private:
std::unique_ptr<cv::Mat> frame;
};
Run Code Online (Sandbox Code Playgroud)
然后,您可以在实现文件中实例化所cv::Mat拥有的unique_ptr.
请注意,引用也可以使用前向声明,但这里不太可能需要引用语义.
| 归档时间: |
|
| 查看次数: |
2052 次 |
| 最近记录: |