为什么在我的代码中将值从构造函数 var 传递到类变量失败?C++

Why does passing the value from a constructor var to the class variable fail in my code? c++

本文关键字:类变量 失败 C++ var 构造函数 代码 我的 为什么      更新时间:2023-10-16

在我的类的构造函数中,我想读出程序的文件路径并将其传递给类变量,但它说"未声明的标识符"

这是我的.H 和 .cpp 文件:

    #ifndef GEHEIMESTAGEBUCH_H
    #define GEHEIMESTAGEBUCH_H
    #include <QtWidgets/QMainWindow>
    #include "ui_geheimestagebuch.h"
    #include "login.h"
    #include "hauptfenster.h"

    class GeheimesTagebuch : public QMainWindow
    {
    Q_OBJECT
    public:
    GeheimesTagebuch(QWidget *parent = 0);
    ~GeheimesTagebuch();
     wstring privatepath;
     wstring getpath()
    {
         return privatepath;
     }

    private:

    Ui::GeheimesTagebuchClass ui;
    accountanlegen * anlegen;
    SimpleCrypt * simple1;
    Hauptfenster * Haupt;
    public slots:
        void update();
        void accountanl();
    };
    #endif // GEHEIMESTAGEBUCH_H

和我的.cpp文件:

#include "geheimestagebuch.h"
#include <fstream>
#include <QDebug>
#include <QMessageBox>
#include <windows.h>
#include <iostream>
using namespace std;
GeheimesTagebuch::GeheimesTagebuch(QWidget *parent)
    : QMainWindow(parent)
{
    ui.setupUi(this);
    QObject::connect(ui.pushButton_2, SIGNAL(clicked()), this, SLOT(accountanl()));
     anlegen=new accountanlegen();
    Haupt=new Hauptfenster();
    simple1=new SimpleCrypt(123321123321);
     anlegen->setVisible(false);
     Haupt->setVisible(false);

    wchar_t buffer[MAX_PATH];
    GetModuleFileName( NULL, buffer, MAX_PATH );
    wstring path1(buffer);
    wstring p1=L"\/";
    wstring::size_type pos = wstring(path1).find_last_of( p1 );
    path1=path1.substr(0,pos);
    privatepath=path1;
}
GeheimesTagebuch::~GeheimesTagebuch()
{
}
void GeheimesTagebuch::update()
{
//unnecessery code. I can show if you want.
}
void GeheimesTagebuch::accountanl()
{

    if(anlegen->isVisible()==false)
        anlegen->show();
}

为什么最后一行不起作用?

GeheimesTagebuch::GeheimesTagebuch(QWidget *parent)
        : QMainWindow(parent)
{
    privatepath=path1;
}

这是我的主要问题。我的最终目标是使用 getter 方法将变量私有路径传递给另一个类。

这是根据要求,我的未编辑错误输出。

1>------ Erstellen gestartet: Projekt: GeheimesTagebuch, Konfiguration: Debug Win32 ------
1>  geheimestagebuch.cpp
1>c:userssteffendocumentsvisual studio 2012projectsgeheimestagebuchgeheimestagebuchgeheimestagebuch.h(17): error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'privatepath'
1>c:userssteffendocumentsvisual studio 2012projectsgeheimestagebuchgeheimestagebuchgeheimestagebuch.h(17): error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>c:userssteffendocumentsvisual studio 2012projectsgeheimestagebuchgeheimestagebuchgeheimestagebuch.h(18): error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'getpath'
1>c:userssteffendocumentsvisual studio 2012projectsgeheimestagebuchgeheimestagebuchgeheimestagebuch.h(18): error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>c:userssteffendocumentsvisual studio 2012projectsgeheimestagebuchgeheimestagebuchgeheimestagebuch.h(19): error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>c:userssteffendocumentsvisual studio 2012projectsgeheimestagebuchgeheimestagebuchgeheimestagebuch.h(21): warning C4183: 'getpath': Rückgabetyp fehlt; Memberfunktion, die 'int' zurückgibt wird angenommen
1>c:userssteffendocumentsvisual studio 2012projectsgeheimestagebuchgeheimestagebuchgeheimestagebuch.h(20): error C2065: 'privatepath': nichtdeklarierter Bezeichner
1>geheimestagebuch.cpp(28): error C2065: 'privatepath': nichtdeklarierter Bezeichner
1>  moc_geheimestagebuch.cpp
1>c:userssteffendocumentsvisual studio 2012projectsgeheimestagebuchgeheimestagebuchgeneratedfilesdebug../../geheimestagebuch.h(17): error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'privatepath'
1>c:userssteffendocumentsvisual studio 2012projectsgeheimestagebuchgeheimestagebuchgeneratedfilesdebug../../geheimestagebuch.h(17): error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>c:userssteffendocumentsvisual studio 2012projectsgeheimestagebuchgeheimestagebuchgeneratedfilesdebug../../geheimestagebuch.h(18): error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'getpath'
1>c:userssteffendocumentsvisual studio 2012projectsgeheimestagebuchgeheimestagebuchgeneratedfilesdebug../../geheimestagebuch.h(18): error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>c:userssteffendocumentsvisual studio 2012projectsgeheimestagebuchgeheimestagebuchgeneratedfilesdebug../../geheimestagebuch.h(19): error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>c:userssteffendocumentsvisual studio 2012projectsgeheimestagebuchgeheimestagebuchgeneratedfilesdebug../../geheimestagebuch.h(21): warning C4183: 'getpath': Rückgabetyp fehlt; Memberfunktion, die 'int' zurückgibt wird angenommen
1>c:userssteffendocumentsvisual studio 2012projectsgeheimestagebuchgeheimestagebuchgeneratedfilesdebug../../geheimestagebuch.h(20): error C2065: 'privatepath': nichtdeklarierter Bezeichner
1>  main.cpp
1>c:userssteffendocumentsvisual studio 2012projectsgeheimestagebuchgeheimestagebuchgeheimestagebuch.h(17): error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'privatepath'
1>c:userssteffendocumentsvisual studio 2012projectsgeheimestagebuchgeheimestagebuchgeheimestagebuch.h(17): error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>c:userssteffendocumentsvisual studio 2012projectsgeheimestagebuchgeheimestagebuchgeheimestagebuch.h(18): error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'getpath'
1>c:userssteffendocumentsvisual studio 2012projectsgeheimestagebuchgeheimestagebuchgeheimestagebuch.h(18): error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>c:userssteffendocumentsvisual studio 2012projectsgeheimestagebuchgeheimestagebuchgeheimestagebuch.h(19): error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>c:userssteffendocumentsvisual studio 2012projectsgeheimestagebuchgeheimestagebuchgeheimestagebuch.h(21): warning C4183: 'getpath': Rückgabetyp fehlt; Memberfunktion, die 'int' zurückgibt wird angenommen
1>c:userssteffendocumentsvisual studio 2012projectsgeheimestagebuchgeheimestagebuchgeheimestagebuch.h(20): error C2065: 'privatepath': nichtdeklarierter Bezeichner
1>  Code wird generiert...
========== Erstellen: 0 erfolgreich, 1 fehlerhaft, 0 aktuell, 0 übersprungen ==========

日安

史蒂文

geheimestagebuch.h文件中的所有wstring都应该是std::wstring。您可能还希望包含string。至少这些错误是这样说的,编译器无法找到类型 wstring .