В первую очередь, если не использовал бы char*. Если Вы хотите строку ASCIIZ, определяете одного из них непосредственно:
const char Test::str[] = "mystr";
По большей части, это - то, что я использовал бы. Почему напрасно тратят время и память для издержек строкового класса.
Примечание, что "sizeof (Тест:: str)", точно даст Вам длину массива, который является длиной строки, включая завершение NUL (strlen (str) +1).
Существует проект под названием quaere .
Это среда Java, которая добавляет возможность запрашивать коллекции.
Примечание. По словам автора, проект больше не поддерживается.
Слот выполняется в потоке, в котором находится объект-получатель.Итак, решение, которое я нашел до сих пор, заключалось в создании объекта внутри run () потока и использовании вместо этого его слотов. Таким образом, владельцем получателя является поток, а затем слот вызывается в контексте потоков.
Для простого примера производителя-потребителя посмотрите запись в блоге Брэдли Т. Хьюза Шагая без головной боли .
Похоже, ваш рабочий поток завершается еще до того, как вы сможете вызвать какую-либо функцию или отправить ему сигнал.
В этом примере показано, как можно разделить класс Worker, чтобы заставить его работать так, как вы хотите. Вам также необходимо предоставить ссылку или указатель на экземпляр Worker, чтобы иметь возможность подключиться к слоту.
class Worker : public QObject
{
Q_OBJECT
public:
Worker() { }
public slots:
void doWork()
{
qDebug() << "executing thread id - " << QThread::currentThreadId();
}
};
class WorkerThread : public QThread
{
Q_OBJECT
public:
void run()
{
qDebug() << "new thread id " << QThread::currentThreadId();
Worker worker;
exec();
}
};