在我的类的构造函数中,我想读出程序的文件路径并将其传递给类变量,但它显示“未声明的标识符”
这是我的 .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/