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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.09.2011, 16:27   #1
AesmaDiv
Пользователь
 
Регистрация: 04.12.2010
Сообщений: 19
По умолчанию C++ и глобальные переменные (struct)

Я Вас приветствую!
Помогите новичку, пжлста. Создал файл light.h в котором описывается структура Light:
Код:
#ifndef LIGHT_H_INCLUDED
#define LIGHT_H_INCLUDED

#endif // LIGHT_H_INCLUDED

struct Light
{
    GLfloat diffuse[4];
    GLfloat ambient[3];
    GLfloat position[3];
    GLfloat direction[3];
    ...
};
...
В основном файле (main.cpp), в шапке объявляю глобальную переменную и задаю параметры переменной:
Код:
#include <iostream>
...
#include "textures.h"
#include "light.h"
...
//Light params
Light light;
light.diffuse[4]= {1.0, 1.0, 1.0,0.0};
light.ambient[3]= {1.0, 1.0, 1.0};
light.position[3]= {0.0,2,2};
light.direction[3]= {0,0,0};
...
int main(int argc, char** argv)
{
    ...
}
Компилятор выдаёт ошибку error: expected constructor, destructor, or type conversion before '.' token| на красных строках. Переношу задание параметров из шапки внутрь функции main:
Код:
#include <iostream>
...
#include "textures.h"
#include "light.h"
...
//Light params
Light light;

...
int main(int argc, char** argv)
{
light.diffuse[4]= {1.0, 1.0, 1.0,0.0};
light.ambient[3]= {1.0, 1.0, 1.0};
light.position[3]= {0.0,2,2};
light.direction[3]= {0,0,0};[/B]
...
}
, всё работает как часы. Читал на каком-то пиндоском форуме, человек задавал подобный вопрос. Но ни ему, ни мне не смогли толком объяснить почему в "глобальной зоне" нельзя присваивать значения. Поясните пожалуйста...

Последний раз редактировалось AesmaDiv; 23.09.2011 в 21:37. Причина: Проблема умерла, до здравствует проблема...
AesmaDiv вне форума Ответить с цитированием
Старый 23.09.2011, 19:09   #2
AesmaDiv
Пользователь
 
Регистрация: 04.12.2010
Сообщений: 19
По умолчанию

ps. Модеры, скажите, будь ласка, как перенести тему в Создание игр?
AesmaDiv вне форума Ответить с цитированием
Старый 24.09.2011, 00:07   #3
f.hump
C/C++, Asm
Участник клуба
 
Аватар для f.hump
 
Регистрация: 02.03.2010
Сообщений: 1,323
По умолчанию

потому что поля структуры не статические и не константные.
пропишите инициализацию в дефолтном конструкторе.

Код:
struct Light
{
    GLfloat diffuse[4];
    GLfloat ambient[3];
    GLfloat position[3];
    GLfloat direction[3];
    Light() {
        light.diffuse[4]= {1.0, 1.0, 1.0,0.0};
        light.ambient[3]= {1.0, 1.0, 1.0};
        light.position[3]= {0.0,2,2};
        light.direction[3]= {0,0,0};
    }
};
f.hump вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
OpenGL & DescribePixelFormat. .pixel Gamedev - cоздание игр: Unity, OpenGL, DirectX 5 03.09.2010 22:33
Builder & OpenGL elpilasgsm C++ Builder 7 02.11.2009 09:26
TForm & TImage & PNG & Прозрачность delphi_beginner Общие вопросы Delphi 7 19.09.2009 08:46
Просто не понимаю б чём проблема!!!!!!!(char* && index) artush1984 Общие вопросы C/C++ 12 30.05.2009 03:30
Распределенные вычисления.Turbo Delphi & OpenGl Scabby Фриланс 1 12.05.2009 19:37