Übergeben Sie QString in der Lambda-FunktionC++

Programme in C++. Entwicklerforum
Anonymous
 Übergeben Sie QString in der Lambda-Funktion

Post by Anonymous »

Ich möchte einen QString an eine Lambda-Slot-Funktion übergeben, um ihn weiter zu modifizieren. Leider verlässt der QString den Gültigkeitsbereich, bevor er den Slot erreicht, sodass ich keinen Text anhängen kann. Wie kann ich sicherstellen, dass der QString nicht über den Bereich hinausgeht, um ihn innerhalb des Lambda zu verarbeiten? Ein Klassenmitglied ist für mich keine Option.

Code: Select all

// main.cpp
#include 
#include 

int main(int argc, char* argv[])
{
QtClass q;
q.foo();
emit q.bar();
}

Code: Select all

// qtclass.h
#include 

class QtClass : public QObject
{
Q_OBJECT

public:
void foo()
{
QString msg = "Hello";
QObject::connect(this, &QtClass::bar, this, [&msg]()
{
msg.append(" World"); // access violation reading position, msg is out of scope
});
};

signals:
void bar();
};

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post