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

标签 c++ setter getter

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

这是我的 .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 方法将变量 privatepath 传递给另一个类。

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

1>------ Erstellen gestartet: Projekt: GeheimesTagebuch, Konfiguration: Debug Win32 ------
1>  geheimestagebuch.cpp
1>c:\users\steffen\documents\visual studio 2012\projects\geheimestagebuch\geheimestagebuch\geheimestagebuch.h(17): error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'privatepath'
1>c:\users\steffen\documents\visual studio 2012\projects\geheimestagebuch\geheimestagebuch\geheimestagebuch.h(17): error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>c:\users\steffen\documents\visual studio 2012\projects\geheimestagebuch\geheimestagebuch\geheimestagebuch.h(18): error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'getpath'
1>c:\users\steffen\documents\visual studio 2012\projects\geheimestagebuch\geheimestagebuch\geheimestagebuch.h(18): error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>c:\users\steffen\documents\visual studio 2012\projects\geheimestagebuch\geheimestagebuch\geheimestagebuch.h(19): error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>c:\users\steffen\documents\visual studio 2012\projects\geheimestagebuch\geheimestagebuch\geheimestagebuch.h(21): warning C4183: 'getpath': Rückgabetyp fehlt; Memberfunktion, die 'int' zurückgibt wird angenommen
1>c:\users\steffen\documents\visual studio 2012\projects\geheimestagebuch\geheimestagebuch\geheimestagebuch.h(20): error C2065: 'privatepath': nichtdeklarierter Bezeichner
1>geheimestagebuch.cpp(28): error C2065: 'privatepath': nichtdeklarierter Bezeichner
1>  moc_geheimestagebuch.cpp
1>c:\users\steffen\documents\visual studio 2012\projects\geheimestagebuch\geheimestagebuch\generatedfiles\debug\../../geheimestagebuch.h(17): error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'privatepath'
1>c:\users\steffen\documents\visual studio 2012\projects\geheimestagebuch\geheimestagebuch\generatedfiles\debug\../../geheimestagebuch.h(17): error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>c:\users\steffen\documents\visual studio 2012\projects\geheimestagebuch\geheimestagebuch\generatedfiles\debug\../../geheimestagebuch.h(18): error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'getpath'
1>c:\users\steffen\documents\visual studio 2012\projects\geheimestagebuch\geheimestagebuch\generatedfiles\debug\../../geheimestagebuch.h(18): error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>c:\users\steffen\documents\visual studio 2012\projects\geheimestagebuch\geheimestagebuch\generatedfiles\debug\../../geheimestagebuch.h(19): error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>c:\users\steffen\documents\visual studio 2012\projects\geheimestagebuch\geheimestagebuch\generatedfiles\debug\../../geheimestagebuch.h(21): warning C4183: 'getpath': Rückgabetyp fehlt; Memberfunktion, die 'int' zurückgibt wird angenommen
1>c:\users\steffen\documents\visual studio 2012\projects\geheimestagebuch\geheimestagebuch\generatedfiles\debug\../../geheimestagebuch.h(20): error C2065: 'privatepath': nichtdeklarierter Bezeichner
1>  main.cpp
1>c:\users\steffen\documents\visual studio 2012\projects\geheimestagebuch\geheimestagebuch\geheimestagebuch.h(17): error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'privatepath'
1>c:\users\steffen\documents\visual studio 2012\projects\geheimestagebuch\geheimestagebuch\geheimestagebuch.h(17): error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>c:\users\steffen\documents\visual studio 2012\projects\geheimestagebuch\geheimestagebuch\geheimestagebuch.h(18): error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'getpath'
1>c:\users\steffen\documents\visual studio 2012\projects\geheimestagebuch\geheimestagebuch\geheimestagebuch.h(18): error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>c:\users\steffen\documents\visual studio 2012\projects\geheimestagebuch\geheimestagebuch\geheimestagebuch.h(19): error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>c:\users\steffen\documents\visual studio 2012\projects\geheimestagebuch\geheimestagebuch\geheimestagebuch.h(21): warning C4183: 'getpath': Rückgabetyp fehlt; Memberfunktion, die 'int' zurückgibt wird angenommen
1>c:\users\steffen\documents\visual studio 2012\projects\geheimestagebuch\geheimestagebuch\geheimestagebuch.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 类型。

关于c++ - 为什么在我的代码中将值从构造函数 var 传递到类变量会失败? C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27459056/

相关文章:

java - Spring不调用setter

c# - 在 C# 中寻找 getters/setters 的简短示例

c++ - 为什么字符串类没有预定义的 << 运算符 (operator<<) 以便字符串像 ostringstreams 一样工作?

c++ - -MM 标志在 g++ 中有什么作用?

c++ - 同步 TCP 日间客户端的用法

java - 通过反射调用getter的最佳方式

python - 使用键作为方法(getter 和 setter)调用语法访问字典

c++ - 在函数调用的参数中使用赋值运算符

c# - 如果分配了相同的值,setter 是否应该立即返回?

ios - 在 Swift 中创建带有边界的 Setter