0

クロスプラットフォーム プログラムを作成しようとしています。クラスを作成し、現在のユーザーのパスを取得する関数を作成しました。後でそのパスを使用したいと思いました。しかし、どういうわけか私はこれらのエラーを受け取ります:

"/usr/include/x86_64-linux-gnu/sys/stat.h:-1: メンバー関数内 'void FileManager::p_getfilepath()':"

「/usr/include/x86_64-linux-gnu/sys/stat.h:105: エラー: 文字列定数の前に修飾されていない ID が必要です」

「/home/david/VocabularyTrainer/filemanager.cpp:31: エラー: 入力の最後に '}' が必要です」

ところで、31行目はこのコードの最後の行です:

void FileManager::p_getfilepath()
{
#ifdef Q_OS_WIN32
#include <windows.h>
#endif

#ifdef Q_OS_LINUX
#include <sys/stat.h>

struct passwd *p;
uid_t  uid;

if ((p = getpwuid(uid = geteuid())) == NULL)
{
    QMessageBox* mb;
    mb->setText("");
    mb->exec();
    delete mb;
}
else
{
    filepath = p->pw_dir;
}
#endif
}

誰が何が悪いのか知っていますか?私はLinuxミントを使用しています。

4

1 に答える 1

2

クラス関数内にヘッダーを含めることで、ヘッダー内のすべてが関数の一部になります。

#ifdef Q_OS_WIN32
#include <windows.h>
#endif

#ifdef Q_OS_LINUX
#include <sys/stat.h>
#endif

void FileManager::p_getfilepath()
{
#ifdef Q_OS_LINUX

    struct passwd *p;
    uid_t  uid;

    if ((p = getpwuid(uid = geteuid())) == NULL)
    {
        QMessageBox* mb;
        mb->setText("");
        mb->exec();
        delete mb;
    }
    else
    {
        filepath = p->pw_dir;
    }

#endif
}
于 2013-04-24T17:03:47.927 に答える