通过成员函数保持来自fstream的流

bry*_*yce 0 c++ linux user-interface qt fstream

我试图保持一个文件/ dev/fb0(linux framebuffer)流在几个Qt成员函数中打开.目标是使用myscreen :: connect函数打开帧缓冲区

bool myscreen::connect()
{
std::fstream myscreen_Fb;
myscreen_Fb.open("/dev/fb0")
QImage* image;
image = new QImage(w, h, QImage::Format_RGB888);
QScreen::data = image->bits();
}
Run Code Online (Sandbox Code Playgroud)

理想情况下,这将打开帧缓冲区并创建一个新的QImage,作为写入屏幕的数据的内存缓冲区.然后我的"图像"将通过bits()函数指向屏幕上的第一个可见像素(内存).我必须实现这一点,因为我的硬件不支持默认的内存映射.

然后我想把它搞砸到屏幕上:

void myscreen::blit(const QImage &img, const QPoint &topLeft, const QRegion &region)
{

QScreen::blit(img, topLeft, region);
write(myscreen_Fb, image.bits(), image.size());
}
Run Code Online (Sandbox Code Playgroud)

我似乎无法将指向第一个可见像素的指针打开使用,并从GCC获得有关未在范围内声明的myscreen_Fb的投诉.有任何想法吗?

更新

我提出了建议的更改并在类中声明了该函数,但是得到了这个让我疯狂的错误.

error: expected constructor, destructor, or type conversion before '.' token
Run Code Online (Sandbox Code Playgroud)

它指的是包含以下内容的行:

vopuscreenFd.open("/dev/fb0", fstream::out);
Run Code Online (Sandbox Code Playgroud)

布莱斯

Chr*_*uin 5

您在仅"connect"函数的范围内声明了myscreen_Fb.要么使它成为myscreen类的成员,要么更好地将它作为参数传递给"blit"函数.