Russian Qt Forum
Май 17, 2024, 11:44 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Передача массива в метод класса  (Прочитано 9755 раз)
StatuS74
Гость
« : Февраль 27, 2012, 08:22 »

Объявил мето дв классе
Код:
void FullTestAdapter (QString [11][11]);

в самом классе делаю следующее

Код:
void test::FullTestAdapter(QString Data[11][11])
{
  DataTester = Data;

}
DataTester это глобальная переменная
Код:
QString DataTester [11][11];
При попытки скомпилировать говорит не соответствие типов (incompatible types in assigment of QString(*)[11] to QString [11][11])

Не могу понять в чем проблема если типы одинаковые
Записан
Kurles
Бывалый
*****
Offline Offline

Сообщений: 480



Просмотр профиля
« Ответ #1 : Февраль 27, 2012, 10:48 »

Тебе же компилятор подсказывает, где именно проблема.

Код
C++ (Qt)
#include <QtCore/QCoreApplication>
#include <QDebug>
 
void print (QString (*array)[11])
{
   for (int i = 0; i <11 ; ++ i)
       for (int x = 0; x < 11;++x)
           qDebug() << array[i][x];
}
 
int main(int argc, char *argv[])
{
   QString array[11][11];
   for (int i = 0; i <11 ; ++ i)
       for (int x = 0; x < 11;++x)
           array[i][x] = QString("%0 - %1").arg(i).arg(x);
   print(array);
}
А вообще стоит почитать, что представляют собой встроенные массивы в С++.
Записан

Код
C++ (Qt)
while(!asleep()) sheep++;
mutineer
Гость
« Ответ #2 : Февраль 27, 2012, 10:55 »

А вообще стоит почитать, что представляют собой встроенные массивы в С++.

И использовать контейнеры:)
Записан
Kurles
Бывалый
*****
Offline Offline

Сообщений: 480



Просмотр профиля
« Ответ #3 : Февраль 27, 2012, 11:00 »

И да, код
Код
C++ (Qt)
void test::FullTestAdapter(QString Data[11][11])
{
 DataTester = Data;
 
}
 

а именно часть
Код
C++ (Qt)
 DataTester = Data;
не пройдет, ибо в с++ возможна лишь поэлементное копирование массивов, так как массив в с++ по сути есть указатель.
« Последнее редактирование: Февраль 27, 2012, 11:01 от Kurles » Записан

Код
C++ (Qt)
while(!asleep()) sheep++;
StatuS74
Гость
« Ответ #4 : Февраль 27, 2012, 11:02 »

а я думал в с++ можно как в с#  просто один массив к другому приравнять
Записан
mutineer
Гость
« Ответ #5 : Февраль 27, 2012, 11:04 »

а я думал в с++ можно как в с#  просто один массив к другому приравнять

Нельзя
Записан
StatuS74
Гость
« Ответ #6 : Февраль 29, 2012, 13:20 »

У меня новая беда с массивами тут.
Делаю коннект,а возвращается мне  false (коннекта нету).
подскажите в чем я ошибся ?
Код:
connect (t,SIGNAL(sig_update(QString[][])),SLOT(UpdateData(QString[][])),Qt::QueuedConnection);
Записан
mutineer
Гость
« Ответ #7 : Февраль 29, 2012, 13:25 »

Не передавай в сигнал-слот обычные массивы, используй QList
Записан
StatuS74
Гость
« Ответ #8 : Февраль 29, 2012, 13:33 »

А он подойдет для передачи одномерного массива ?
Записан
mutineer
Гость
« Ответ #9 : Февраль 29, 2012, 13:35 »

А он подойдет для передачи одномерного массива ?

да
Записан
StatuS74
Гость
« Ответ #10 : Февраль 29, 2012, 13:37 »

перепутал,мне многомерный  массив надо передавать.
Записан
mutineer
Гость
« Ответ #11 : Февраль 29, 2012, 13:38 »

перепутал,мне многомерный  массив надо передавать.

Разложи в одномерный старым дедовским методом и передавай
Записан
StatuS74
Гость
« Ответ #12 : Февраль 29, 2012, 13:42 »

ругается на void UpdateData(QList,int);
Говорит  'QList' is not a type
Записан
mutineer
Гость
« Ответ #13 : Февраль 29, 2012, 13:43 »

<QList> подключал?
А шаблонный параметр листу кто указывать будет?
Записан
StatuS74
Гость
« Ответ #14 : Февраль 29, 2012, 13:44 »

Конечно подключал
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.111 секунд. Запросов: 19.