Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Структуры в Visual C++ (VS 2008)

47K
30 января 2010 года
CommanderRUS
17 / / 13.11.2009
Всем привет!

Проблема следующая. Пишу приложение на Visual C++ (Windows Forms).

Нужно создать следующую структуру

struct structura{
int m1,m2,m3; };

и массив
structura s[20];

и нужно сделать так, чтобы этот массив был обьявлен глобально.
Или хотя бы чтобы доступ к нему имели все функции и элементы формы (форма одна).

пытался обьявлять внутри класса формы, компилятор ругается


P.S. Возможно вопрос покажется мега глупым, но раньше все время работал в делфях, на с++ писал только консольные приложения, а сейчас возникла потребность написать на MS VS 2008 приложение с помощью Windows Forms.

Заранее благодарю!
288
30 января 2010 года
nikitozz
1.2K / / 09.03.2007
Приведите свой код, и ошибки, которыми компилятор ругается. Будет виднее.
47K
30 января 2010 года
CommanderRUS
17 / / 13.11.2009
кусок кода создающий проблему:

 
Код:
struct chislo{
    int m1,m2,ch1,ch2,ost;
} x[20];


структуру пытаюсь обьявить в классе Form1:
 
Код:
public ref class Form1 : public System::Windows::Forms::Form
    {



лог ошибок:
 
Код:
Form1.h(1084) : error C2814: Теориячисел::Form1::chislo: собственный тип не может быть вложенным в управляемом типе "Теориячисел::Form1"

Form1.h(23): см. объявление 'Теориячисел::Form1'

Form1.h(1086) : error C4368: не удается определить "x" как член управляемого "Теориячисел::Form1": смешанные типы не поддерживаются
297
30 января 2010 года
koodeer
1.2K / / 02.05.2009
Код:
public ref class Form1 : public System::Windows::Forms::Form
{
    ref struct chislo
    {
        int m1,m2,ch1,ch2,ost;
    };
    array<chislo^> ^x;
public:
    Form1(void)
    {
        InitializeComponent();

        x = gcnew array<chislo^>(20);
        for (int i=0; i<20; i++)
            x = gcnew chislo();
        ...
    }
    ...
};


Обязательно для изучения: array

PS: раз уж используете управляемый код, переходите на C# - намного проще.
47K
30 января 2010 года
CommanderRUS
17 / / 13.11.2009
заработал следующий код:
Код:
public ref class Form1 : public System::Windows::Forms::Form
    {
        ref struct chislo
        {
            int m1,m2,ch1,ch2,ost;
        };

    public:
        Form1(void)
        {
            InitializeComponent();

            array<chislo^>^ x = gcnew array<chislo^>(20);
                for (int i=0; i<20; i++)
                    x = gcnew chislo();

        }


но когда на кнопку вешаю, допустим, присвоение
 
Код:
x[0]->ost=5;


то получаю следующее:
 
Код:
Form1.h(1177) : error C2248: System::Windows::Forms::Control::x: невозможно обратиться к private член, объявленному в классе "System::Windows::Forms::Control"

Form1.h(23): см. объявление 'System::Windows::Forms::Control::x'
c:\windows\microsoft.net\framework\v2.0.50727\system.windows.forms.dll: см. объявление 'System::Windows::Forms::Control'

Form1.h(1177) : error C2109: для индекса требуется массив или указатель

Form1.h(1177) : error C2227: выражение слева от "->ost" должно указывать на тип класса, структуры или объединения либо на универсальный тип
297
30 января 2010 года
koodeer
1.2K / / 02.05.2009
Я поправил свой код выше. Сперва забыл там объявить массив.

Вы объявили массив внутри конструктора класса, соответственно он получился локальный и больше нигде не виден.
47K
30 января 2010 года
CommanderRUS
17 / / 13.11.2009
Цитата: koodeer
Вы объявили массив внутри конструктора класса, соответственно он получился локальный и больше нигде не виден.


Действительно))) даж не подумал когда приписывал )


Цитата: koodeer
Я поправил свой код выше. Сперва забыл там объявить массив.


Огромное спасибо за помощь! Все заработало


Еще один вопросик будет, не касающийся озвученной в шапке темы.

Допустим у меня есть файл func.h где описаны некторые функции которые я буду вызывать из формы, а в этих функцих есть строчки отвечающие за управление элементами формы. Допустим функция будет добавлять текст в richTextBox.
Что нужно сделать, чтобы функция в func.h имела доступ к элементам формы?

36K
04 февраля 2010 года
sstorm
55 / / 25.03.2009
передать внутрь функции в качестве параметр хэндл нужного компонента (richTextBox)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог