你好我读了所有其他的问题,但是在我的脑海里没有被清除,拜托,对不起,如果是重复的问题,但我没有办法解决这个问题。
我在使用G ++ / GCC的Ubuntu机器上使用QT 5。 所以,我正在编译,我得到这个错误:
src/rolebit.cpp:279:26: error: variable 'startWindowImpl mainWin' has initializer but incomplete type
startWindowImpl mainWin(myConfig,myLog);
所以,从rolebit.cpp文件我有这个实现:
#ifdef QML_CLIENT
//START THE QML SWITCH HERE
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <QApplication>
#include <boost/shared_ptr.hpp>
#include "configfile.h"
#include "qmlwrapper.h"
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
boost::shared_ptr<ConfigFile> myConfig;
myConfig.reset(new ConfigFile(argv[0], false));
QmlWrapper myQml(myConfig);
return app.exec();
}
但在此之后,我有这样的话:
#else
// START OF OLD QT-WIDGETS GUI SECTION
#include <boost/asio.hpp>
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <qapplication.h>
#if QT_VERSION >= 0x050000
#include <QtWidgets>
#endif
#include <QtGui>
#include <QtCore>
#ifdef __APPLE__
#if QT_VERSION < 0x050000
#include <QMacStyle>
#endif
#endif
#include <curl/curl.h>
#include "session.h"
#include "startwindowimpl.h"
#include "configfile.h"
#include "log.h"
#include "startsplash.h"
#include "game_defs.h"
#include <net/socket_startup.h>
#include <third_party/qtsingleapplication/qtsingleapplication.h>
#ifdef _MSC_VER
#ifdef _DEBUG
#define _CRTDBG_MAP_ALLOC
#include <crtdbg.h>
#define ENABLE_LEAK_CHECK() \
{ \
int tmpFlag = _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG); \
tmpFlag |= _CRTDBG_LEAK_CHECK_DF; \
_CrtSetDbgFlag(tmpFlag); \
}
#endif
#endif
#ifndef ENABLE_LEAK_CHECK
#define ENABLE_LEAK_CHECK()
#endif
我遇到的问题是:
startWindowImpl mainWin(myConfig,myLog);
那么,我需要做些什么呢?
提前谢谢
答案 0 :(得分:0)
看起来{class 1}}类已在“startwindowimpl.h”中完全声明,但在代码的第一部分中没有行startWindowImpl
。因此,当#include "startwindowimpl.h"
为QML_CLIENT
时,不会包含此标头,这会使类#define
的完整声明未知。