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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.05.2008, 07:39   #1
mdrake
 
Регистрация: 14.05.2008
Сообщений: 5
По умолчанию Описание структур и массивов в оконной форме

Начал осваивать Visual Stidio 2005 (C++).
Раньше писал на C++ Borland 3.1 под DOS.
Построил оконную форму WinForm.
Возникли проблемы с описанием структур (struct) и массивов.
Пробовал описать их во внешнем файле (например, var.cpp) и вставить в файл основной формы и stdafx.h строку
#include “var.h”
(в файле заголовков даны ссылки extern на описанные переменные)
Например,
В var.cpp:
union
{
struct
{
unsigned Simul:1;
unsigned PP_Up:1;
unsigned res:14;
} f;
unsigned Words[1];
} Flg;

В var.h:
extern union
{
struct
{
unsigned Simul:1;
unsigned PP_Up:1;
unsigned res:14;
} f;
unsigned Words[1];
} Flg;

Компилятор ругается

'Flg' : redefinition; different basic types

Если описать структуру в теле основного файла (где указана возможность добавления своих переменных)

namespace WinForm {
. . .
public ref class Form1 : System::Windows::Forms::Form
{
public:
Form1(void)
{
. . .
}
. . .

protected:
private:
/// Required designer variable.
//… описание моей структуры

,то выдается ошибка

cannot define unnamed class, struct or union inside of managed type 'WinForm::Form1'

А если тут описать какой-либо массив, например
char Bytes[5];

то идёт ошибка:

сannot define 'Bytes' as a member of managed 'WinForm::Form1': mixed types are not supported

Описание обычных переменных (int, char, long) в этом месте никаких ошибок не даёт, и они нормально используются при работе приложения.

Если вынести описания структуры или массива до оператора namespace WinForm,
то компилятор это съедает, но если вставить обращение к элементу структуры
(Flg::f::Simul=1, то возникает ошибка:

'Flg' : left of '::' must be a class/struct/union
'Simul' : undeclared identifier

А элементы массива при этом не видны основному приложению.

В Help’е никаких тонкостей по описанию структур и массивов для оконных форм не нашёл.

Как правильно сделать в оконной форме описание структур, союзов и массивов и обращение к ним?
mdrake вне форума Ответить с цитированием
Старый 14.05.2008, 08:28   #2
vvviperrr
Тупой студент
Форумчанин
 
Аватар для vvviperrr
 
Регистрация: 12.05.2007
Сообщений: 614
По умолчанию

просто ты юзаешь дот нет. создавай мфц приложение или вин апи, и так же описывай свои переменные в заголовочном файле,потом подключай к форме и юзай.
vvviperrr вне форума Ответить с цитированием
Старый 15.05.2008, 14:18   #3
mdrake
 
Регистрация: 14.05.2008
Сообщений: 5
По умолчанию

Спасибо за совет, но методом перебора вариантов нашёл более простой способ – описал union как public перед namespace и переместил названия сразу после ключевых слов:

public union Flg
{
public:
struct f
{
unsigned Simul:1;
unsigned PP_Up:1;
. . .
};
unsigned Words[2];
};

а затем сделал подстановку путей:
Flg::f Flag; // для структуры
Flg W; // для массива

В оконной форме обращение к ним:

Flag.Simul=1;
W.Words[0]=0;
mdrake вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
diff для структур ag-moscow Общие вопросы C/C++ 2 09.04.2008 02:57
Программа. Паскаль. Описание внутри. Nexx Помощь студентам 5 07.12.2007 20:07
QIP Dll's Описание у кого есть? LEKA Win Api 10 18.05.2007 08:55