Я хочу получить доступ к закрытым объектам класса MainWindow
с функцией друга void recognized(RecoResult *result)
, у которой уже есть другое пространство имен LapsAPI::RecoResult
в параметре result
. Как я могу получить доступ к Ui::MainWindow *ui
внутри этой функции друга?Друг не имеет доступа к частному члену
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include "main.h"
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
friend void recognized(RecoResult *result);
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void on_pushButton_clicked();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "main.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
void MainWindow::on_pushButton_clicked()
{
// Iniciando classe de reconhecimento
SREngine* en;
en = new SREngine("clara.jconf");
// Inicio do reconhecimento de voz
en->setOnRecognizeAction(&recognized);
en->startRecognition();
printf("Ola!\n");
printf("Reconhecendo\n");
sleep(100);
en->stopRecognition();
}
MainWindow::~MainWindow()
{
delete ui;
}
void recognized(RecoResult *result){
if(result->getConfidence() > TRUST){
cout << result->getUterrance() << " Confiança " << result->getConfidence() << endl;
string uterrance = "";
float confidence = 0.0;
uterrance = result->getUterrance();
confidence = result->getConfidence();
cout << "MENSAGEM RECONHECIDA SEM FILTROS: " << uterrance << " " << confidence << "\n" << endl;
ui->textBrowser->append("RECONHECIDA");
}
}
ОШИБКА
/home/dayannefernandes/GitHub/clara-interface/clara-ui/mainwindow.cpp:44: error: 'ui' was not declared in this scope
ui->textBrowser->append("MENSAGEM RECONHECIDA");
^
Объясните, что вы думаете, 'ui' должно означать внутри функции' узнано' –
Это не имеет ничего общего с пространствами имен, 'узнал' и' MainWindow' оба находятся в глобальном пространстве имен –
Извините, я забыл рассказать об признанных, i возможно, параметры, потому что setOnRecognizeAction() нуждаются только в LaPSAPI :: RecoResult, и я не могу объявить распознанный внутри MainWindow также потому, что у меня будет эта ошибка: ошибка: нет соответствующей функции для вызова в 'LapsAPI :: SREngine :: setOnRecognizeAction (void (MainWindow :: *) (LapsAPI :: RecoResult *)) ' –