Visual Studio 2013 神秘的 C2228 错误
visual studio 2013 mysterious C2228 error
我最近将一些qt项目从2008年升级到2013年。我得到了一个奇怪的
Error 1 error C2228: left of '.currentText' must have class/struct/union
当我尝试访问我的 GUI 中的组合框时出错。
这是代码,非常简单:
videopanel.h
#ifndef VIDEOPANEL_H
#define VIDEOPANEL_H
#include <QCamera>
#include <QtWidgets>
#include <QMediaRecorder>
#include <QCameraImageCapture>
#include <QCameraViewFinder>
#include <QVideoWidget>
namespace Ui {
class videoPanel;
}
class videoPanel : public QWidget
{
Q_OBJECT
public:
explicit videoPanel(QWidget *parent = 0);
~videoPanel();
private slots:
void monitorToggle(int state);
private:
Ui::videoPanel *ui;
QCamera *camera;
QList<QCameraInfo> cameraInfos;
QCameraImageCapture *imageCapture;
QMediaRecorder* mediaRecorder;
QImageEncoderSettings imageSettings;
QAudioEncoderSettings audioSettings;
QVideoEncoderSettings videoSettings;
QString videoContainerFormat;
bool isCapturingVideo;
void setCamera(void);
};
#endif // VIDEOPANEL_H
这是CPP:视频面板.cpp
#include "videopanel.h"
#include "ui_videopanel.h"
#include <QMediaService>
#include <QMediaRecorder>
#include <QCameraViewfinder>
#include <QCameraInfo>
#include <QMediaMetaData>
#include <iostream>
videoPanel::videoPanel(QWidget *parent) :
QWidget(parent),
ui(new Ui::videoPanel),
camera(0),
imageCapture(0),
mediaRecorder(0)
{
ui->setupUi(this); // fine!!!
QObject::connect(ui->monitorCheck, SIGNAL(stateChanged(int)), this, SLOT(monitorToggle(int)) );
// Camera devices:
cameraInfos = QCameraInfo::availableCameras();
// display device descriptions in combo box
for (QList<QCameraInfo>::Iterator it = cameraInfos.begin();
it != cameraInfos.end(); ++it)
ui->cameraBox->addItem(it->description()); // fine!!!
}
videoPanel::~videoPanel()
{
delete mediaRecorder;
delete imageCapture;
delete camera;
}
void videoPanel::setCamera(void) {
delete imageCapture;
delete mediaRecorder;
delete camera;
for (QList<QCameraInfo>::Iterator it = cameraInfos.begin();
it != cameraInfos.end(); ++it)
if (!it->description().compare(ui->cameraBox.currentText())) // not fine!!!
camera = new QCamera(*it);
}
void videoPanel::monitorToggle(int state) {
if (state == Qt::CheckState::Checked);
std::cout << ui->cameraBox.currentText() << std::endl; // not fine!!!
}
我上面引用的错误出现在第 51 行和第 60 行,我尝试访问 ui
.
所以在构造函数中,编译器可以使用变量ui
,但在其他方法中则不然。这是非常样板的qt东西,所以我不确定问题是什么,但是,我怀疑VS中有一些标志以某种方式掩盖了我的ui
变量的范围。我所有其他私有变量都可以,所以我不知道问题是什么。
我确信uic/moc
过程正常工作,我尝试清洁和重建无济于事。
替换以下行:
if (!it->description().compare(ui->cameraBox.currentText()))
std::cout << ui->cameraBox.currentText() << std::endl;
由:
if (!it->description().compare(ui->cameraBox->currentText()))
std::cout << ui->cameraBox->currentText() << std::endl;
相关文章:
- 在编译时,C++项目抛出错误 C2228,这是预期的,因为控件在运行时未达到该点
- 错误 C2228 左侧'.setDay'必须具有类/结构/联合
- Visual Studio 2013 神秘的 C2228 错误
- 为什么向导Wiz0;不等于向导Wiz0();在我的代码中?C2228错误
- C++ 异常情况下的错误 C2228(".val"的左侧必须具有类/结构/联合)
- 错误 C2228:".x"的左侧必须具有类/结构/联合
- 错误:C2228:左侧必须具有类/结构/联合
- 错误 C2228:".printStats"的左侧必须具有类/结构/联合
- 我正在尝试获取媒体播放器的元数据,但QT中不断出现C2228错误
- 错误 C2228:'.Alloc'左侧必须具有类/结构/联合
- 错误 C2228:".values"的左侧必须具有类/结构/联合
- 错误 22 错误 C2228:'.size'左侧必须具有类/结构/联合
- 错误 C2228:'.visitFile'左侧必须具有类/结构/联合类型
- 为什么在 Visual Studio 2012 中编译我的C++代码时出现错误 C2228
- 获取错误代码 C2228:'._Ptr'左侧必须具有类/结构/联合
- 错误 C2228:'.push_back'左侧必须具有类/结构/联合
- 错误 C2228:'.GetX'左侧必须具有类/结构/联合
- Visual Studio 2015中的编译错误C2228
- 错误C2228,虽然左边的.x有一个类
- c++指向对象的指针队列c2228错误