Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Raumnur от Июль 21, 2016, 11:38



Название: Связь между модулями
Отправлено: Raumnur от Июль 21, 2016, 11:38
Всем привет. Есть модуль MainWindow.cpp и подключаю стороний хедер ideal.h с cpp-шником ideal.cpp.
В подключенном хедере(ideal.h) объявлен вектор в private. SPoint кстати говоря структура.
Код:
std::vector<SPoint> recv[3][COUNT_UMP];

Вопрос: как мне наладить связь между модулями, чтобы  допустим по клику баттона передавать данные из данного вектора на MainWindow?


Название: Re: Связь между модулями
Отправлено: Kurles от Июль 21, 2016, 12:22
В ideal.h должны быть публичные геттеры для этого вектора, вот их и используй.


Название: Re: Связь между модулями
Отправлено: Raumnur от Июль 21, 2016, 14:10
В ideal.h должны быть публичные геттеры для этого вектора, вот их и используй.

в паблике вот такая вот схема. Откуда можно вытащить, я ума не приложу. Вроде ни один из методов ничего не возвращает...или я чего-то недогоняю

Код:
class Ideal
{
public:
    Ideal(unsigned int c_point);
    virtual ~Ideal();
    void updatebyFreq(unsigned int i_freq);
    void updatebyMode(unsigned int mode);
    void updatebyInterval(double interval);


Название: Re: Связь между модулями
Отправлено: Racheengel от Июль 21, 2016, 14:32
Что это вообще за API? от какого девайса?


Название: Re: Связь между модулями
Отправлено: Bepec от Июль 21, 2016, 14:39
Ну для этого вам как минимум придётся редактирвоать cpp-шник и ашник вашего ideal. Либо писать свои геттеры сеттеры, либо выносить вектор в паблик. Если же данный класс будет использован в библиотеке, вы уже ничего отредактировать не сможете и ... ну и всё :D


Название: Re: Связь между модулями
Отправлено: Raumnur от Июль 21, 2016, 16:35
Тогда такой вопрос, возможно ли написать геттер который вернет массив?


Название: Re: Связь между модулями
Отправлено: Kurles от Июль 21, 2016, 16:59
Тогда такой вопрос, возможно ли написать геттер который вернет массив?
Многомерные массивы проблематично возвращать. Проще геттер для элемента массива написать. И даже наверное так лучше будет.


Название: Re: Связь между модулями
Отправлено: Raumnur от Июль 21, 2016, 17:05
Многомерные массивы проблематично возвращать. Проще геттер для элемента массива написать. И даже наверное так лучше будет.

Мне по сути нужно будет вернуть одномерный массив. Но тут еще другая проблема. Написал геттер, дальше в обработчике по клику мыши присваиваю переменной и программа вылетает...
Код:
double Ideal::GetAdb(unsigned int Canel, unsigned int Num, unsigned int Point)
{
   return recv[Canel][Num][Point].A;
   
}

Выносил в паблик массив, все работает, с геттером-не хочет


Название: Re: Связь между модулями
Отправлено: gil9red от Июль 22, 2016, 08:28
Многомерные массивы проблематично возвращать. Проще геттер для элемента массива написать. И даже наверное так лучше будет.

Мне по сути нужно будет вернуть одномерный массив. Но тут еще другая проблема. Написал геттер, дальше в обработчике по клику мыши присваиваю переменной и программа вылетает...
Код:
double Ideal::GetAdb(unsigned int Canel, unsigned int Num, unsigned int Point)
{
   return recv[Canel][Num][Point].A;
   
}

Выносил в паблик массив, все работает, с геттером-не хочет

Наверное падает из-за выхода за пределы массива или указатель, возвращаемый recv[Canel][Num][Point] оказался пустой


Название: Re: Связь между модулями
Отправлено: Igors от Июль 22, 2016, 09:10
..и программа вылетает...
..
...с геттером-не хочет
Тема навевает грусть и меланхолию. Такие вещи не на форуме надо спрашивать, а отлаживать, смотреть валидны ли все 3 индекса в отладчике и/или печатать их в консоли.   


Название: Re: Связь между модулями
Отправлено: Bepec от Июль 22, 2016, 10:11
А ещё лучше приводить код :D