Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Qt и кроссплатформенное программирование С/С++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.07.2012, 18:54   #1
Renok
Пользователь
 
Регистрация: 27.05.2011
Сообщений: 36
Вопрос Правильное обращение к функции

Привет.
Не могу правильно вызвать функцию. Вот исходники двух форм (вызываю функцию одной формы из другой)

choice.h
Код:
#ifndef CHOICE_H
#define CHOICE_H

#include <QMainWindow>

namespace Ui {
class choice;
}

class choice : public QMainWindow
{
    Q_OBJECT
    
public:
    explicit choice(QWidget *parent = 0);
    int Test_Massiv (int m_massiv[29][29]);
    ~choice();
    
private:
    Ui::choice *ui;

public slots:
    void vpb_start();

};

#endif // CHOICE_H
choice.cpp
Код:
#include <QWidget>
#include "choice.h"
#include "ui_choice.h"
#include "game.h"


choice::choice(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::choice)
{
    ui->setupUi(this);
    QObject::connect(ui->pb_map, SIGNAL(clicked()), this, SLOT(vpb_start()));
}

choice::~choice()
{
    delete ui;
}

void choice::vpb_start()
{
    Game *lr = new Game();
    lr->showFullScreen();
    hide();
}

int choice::Test_Massiv (int m_massiv[29][29])
{
    for (int i=0;i<=29;i++)
        for (int q=0;q<=29;q++)
            m_massiv[i][q]=0;

    return m_massiv[29][29];
}
game.h
Код:
#ifndef GAME_H
#define GAME_H

#include <QMainWindow>
#include <QPicture>
#include <QImage>
#include <QPainter>

namespace Ui {
class Game;
}
class Game : public QMainWindow
{
    Q_OBJECT
    
public:
    explicit Game(QWidget *parent = 0);
    ~Game();

protected:
    void paintEvent(QPaintEvent *);
    
private:
    Ui::Game *ui;
};
extern int Massiv_Locat[29][29];
    /*Статичные объекты массива*/

#endif // GAME_H
game.cpp
Код:
#include "game.h"
#include "ui_game.h"
#include "choice.h"
#include "QtGui"
#include "QPainter"
//#include <QRadialGradient>
//-------------------------************************---------------------------------
Game::Game(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::Game)
{
    ui->setupUi(this);

    int Massiv_Locat[29][29];
    Massiv_Locat[29][29]=choice.Test_Massiv(Massiv_Locat[29][29]);
//в этой (этих?) строчке ошибка*
}
//-------------------------************************---------------------------------
Game::~Game()
{
    delete ui;
}
//-------------------------************************---------------------------------
void Game::paintEvent(QPaintEvent *)
{
    QPainter painter(this);
    QRadialGradient gradient(25, 25, 25, 15, 15);
    gradient.setColorAt(0.2, Qt::white);
    gradient.setColorAt(0.8, Qt::green);
    gradient.setColorAt(1, Qt::black);
    painter.setBrush(gradient);
    painter.drawEllipse(0, 0, 50, 50);
    painter.end();

    QPainter painter2(this);
    QLinearGradient gradient1(150, 150, 200, 200);
    gradient1.setColorAt(0, Qt::red);
    gradient1.setColorAt(0.5, Qt::green);
    gradient1.setColorAt(1, Qt::blue);
    painter2.setBrush(gradient1);
    painter2.drawRect(100, 100, 150, 150);
    painter2.end();

}
*вот дословный текст ошибки
Цитата:
D:\Qt\projects\proba-build-desktop-Qt_4_8_0_for_Desktop_-_MinGW__Qt_SDK_________\..\proba\ga me.cpp:28: ошибка: expected primary-expression before '.' token
Скорее всего я неправильно либо объявил / вызвал функцию (а точнее, передающиеся в нее параметры), либо неправильное использование глобальной переменной Massiv_Locat[29][29]

жду помощи
Renok вне форума Ответить с цитированием
Старый 10.07.2012, 19:12   #2
Петррр
Форумчанин
 
Аватар для Петррр
 
Регистрация: 02.09.2011
Сообщений: 336
По умолчанию

Проект выкладывайте.
Если ты не можешь найти то, ради чего стоит жить, лучше найти то, за что стоит умереть
Петррр вне форума Ответить с цитированием
Старый 12.07.2012, 14:19   #3
Hejerdal
Пользователь
 
Регистрация: 03.07.2012
Сообщений: 14
По умолчанию

А что вы вообще в этой
Код:
  Massiv_Locat[29][29]=choice.Test_Massiv(Massiv_Locat[29][29]);
строчке делаете? Насколько я вижу, в классе Game нет никакого объекта с именем "choice". Если вы подразумевали, что choice здесь - это имя класса, то метод нужно объявить, как static и обращаться к нему через оператор '::'
Hejerdal вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Правильное добавление маГГ85 SQL, базы данных 5 14.01.2012 23:26
Обращение к из одной функции класса к другой того же класса,не указывая к какому объекту она относиться zipwind C++ Builder 1 09.04.2011 17:18
обращение к функции saix Общие вопросы C/C++ 1 16.02.2011 19:35
Обращение к функции, введенной в текстовое окно Лена Помощь студентам 7 29.12.2006 10:42
Вопрос про правильное написание функции AndreichSB Microsoft Office Excel 6 25.12.2006 19:27