Здравствуйте. В этот тесте цель заполнить массив класса и вернуть его из функции класса как указатель на него. Потом вывести, проверить.
Вопросы:
1. Правильно ли возвращен указатель на массив в самом конце return WPlanMap;
Гуглил, нашел такой пример.
Получается я возвращаю сам массив как-бы, но так как тип возвращаемого
значение функции GetProgressiveMatrix указатель, возвращается не сам массив, а указатель? Или как это понимать?
2. Почему написано Expected a declaration в описании функции BYTE (*MyProg::GetProgressiveMatrix(int n))[8], типа ошибка, хотя все компилируется нормально и отрабатывает?
(см. скрин)
Вот весь код программа. Состоит из двух файлов:
//Header.h
#ifndef Test_H
#define Test_H
#include "ui_USEROK.h"
#include <QtGui>
#include <QtCore>
class MyProg : public QWidget, public Ui::MyProg
{
Q_OBJECT
public:
MyProg(QWidget* pwgt = 0, Qt::WindowFlags f = 0);
BYTE (*GetProgressiveMatrix(int n))[8];
public slots:
void Deal3Start();
protected:
BYTE WPlanMap[4][8];
};
#endif
//Source.cpp
#include "Header.h"
#include <cmath>
#include <cstdlib>
#include <cstdio>
MyProg::MyProg(QWidget* pwgt,Qt::WindowFlags f) : QWidget(pwgt,f){
setupUi(this);
setFixedSize(700, 600);
connect(Deal3Button, SIGNAL(clicked()), this, SLOT(Deal3Start()));
}
void MyProg::Deal3Start(){
QString ResultStr = "";
QString TempStr;
BYTE (*pWPlanMap)[8];
pWPlanMap = GetProgressiveMatrix(TestBox->value());
for (int i = 0; i < 4; ++i){
for (int j = 0; j < 8; ++j){
ResultStr = ResultStr + TempStr.setNum(pWPlanMap[i][j]) + ",";
}
ResultStr = ResultStr + '\n';
}
TestResult->setText(ResultStr);
}
BYTE (*MyProg::GetProgressiveMatrix(int n))[8]
{
for (int i = 0; i < 4; ++i){
for (int j = 0; j < 8; ++j){
WPlanMap[i][j] = n+j+(i*8);
}
}
return WPlanMap;
}
Эскизы прикрепленных изображений
 РЈРСВВВВВеньшено Р В Р’В Р СћРІР‚ВВВВР С• 51%
537 x 56 (11.1 килобайт)
|