Я не уверен, почему это происходит, но кажется, что он ошибочно выдает ошибку «не был объявлен в этой области». Я говорю это, потому что это работает на моем компьютере с Windows (компилятор MSVC), но не будет работать на моем Mac (GCC). Я использую Qt Creator, чтобы написать это. Вот моя ситуация:
Он выдает ошибку на моем pushButtonClicked...
void NewGpdDialog::on_pushButton_clicked()
{
*xdbf = XDBFcreate(filePath.toStdString(), Achievement, ba.data(), ba.size(), &str);
}
точная ошибка, которую он выдает:
.../newgpddialog.cpp:63: ошибка: «XDBFcreate» не был объявлен в этой области
Я почти уверен, что это объявлено, потому что в верхней части моего файла я включаю:
#include "newgpddialog.h"
#include "ui_newgpddialog.h"
#include "xdbf.h"
#include <QDesktopServices>
#include <QBuffer>
#include <QFileDialog>
#include <QMessageBox>
"xdbf.h" - это то место, где он объявлен... Вот часть моего заголовочного файла XDBF:
class XDBF
{
public:
XDBF(string path);
~XDBF();
...
static std::string FILETIME_to_string(FILETIME *pft);
friend XDBF* XDBFcreate(string filePath, GPD_Type type, char *imageData = NULL, size_t imageDataLen = 0, wstring *gameName = NULL);
Теперь у меня есть это в моем файле «xdbf.cpp» следующим образом:
XDBF* XDBFcreate(string filePath, GPD_Type type, char *imageData, size_t imageDataLen, wstring *gameName)
{
...
}
Кроме того, интересно то, что если я щелкну его правой кнопкой мыши в заголовке и нажму «Следовать за символом под курсором», он не сможет его найти ... Другое дело, имейте в виду, что это работает на моем компьютере с Windows.
XDBFcreate
не кажется статическим методом. - person BeMFi   schedule 22.05.2012