Форум программистов, компьютерный форум, киберфорум
C++/CLI Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/22: Рейтинг темы: голосов - 22, средняя оценка - 4.50
11 / 11 / 2
Регистрация: 12.02.2011
Сообщений: 88

Не могу использовать класс на форме

26.03.2011, 11:33. Показов 4415. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Написал класс для работы с очередями. С консолью работает, а при создании объекта класса на форме вылетают 2 ошибки:

1) только статические данные-члены можно инициализировать внутри класс ссылки или типа, передаваемого по значению
2) не удается определить "Q" как член управляемого "Queue1::Form1": смешанные типы не поддерживаются

Объект создаю в этой зоне:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    protected:
        /// <summary>
        /// Освободить все используемые ресурсы.
        /// </summary>
        ~Form1()
        {
            if (components)
            {
                delete components;
            }
        }
 
    private:
        /// <summary>
        /// Требуется переменная конструктора.
        /// </summary>
        MyQueue Q = new MyQueue();
        System::ComponentModel::Container ^components;
код класса:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#pragma once
#include <stdlib.h>
#include <string>
 
using namespace std;
 
class MyQueue
{
    public: 
                       // структура, из элементов которой состоит очередь
        struct Item
        {
            int Field;
            Item* Next;
        };
 
        Item* Head;
        Item* Tail;
        int Count;
 
        MyQueue()
        {
            Head = NULL;
            Tail = NULL;
            Count = 0;
        }
 
        void Enqueue(int initField)
        {
            // создание нового элемента
            Item* New = new Item;
 
            // его инициализация 
            New->Next = NULL;
            New->Field = initField;
 
            // если очередь пустая
            if (Count == 0)
            {
                Head = New;
                Tail = New;
            }           
            // иначе
            else
            {
                Tail->Next = New;
                Tail = New;
            }
 
            Count++;
        }
 
        int Dequeue()
        {
            int Request = Head->Field;
            Item* Tmp = Head;
            
            Head = Head->Next;
            delete Tmp;
            Count--;
 
            return Request;
        }
 
        void Fill(int Count)
        {
            for (int i = 0; i < Count; i++)
                Enqueue((rand()%100)/(rand()%10+1));
        }
 
        string Display()
        {
            string Result = "";
            Item* Tmp = Head;           
            
            while (Tmp != NULL)
            {   
                char* ch = new char;
                
                ch = itoa(Tmp->Field, ch, 10);  
                Result += ch;
                Result += " ";
                Tmp = Tmp->Next;
            }
 
            if (Result == "")
                Result = "NULL";
 
            return Result;
        }
};
что делать?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.03.2011, 11:33
Ответы с готовыми решениями:

Не могу использовать класс в классе, определённые в разных файлах
Есть значит у меня два файла с классами в visual studio. Первый : #include &quot;Email.h&quot; #include &quot;Folder.h&quot; using...

Использовать абстрактный класс, статический класс, использовать: наследование, агрегирование, композицию
Добрый день. Нужна ваша помощь. Учусь в университете, задали придумать тему программы. в программе нужно использовать следующее:...

Класс, для полей которого нужно использовать класс
Нужно помочь с этой частью, ну и проблемка - char для ФИО не переваривает пробелы. #include &quot;stdafx.h&quot; #include...

1
5 / 5 / 0
Регистрация: 04.04.2011
Сообщений: 37
04.04.2011, 22:44
Так класс нужно выделить в отдельный namespace, название которого должно отличаться от названия класса, выделить надо оба файла cpp и h файлы, пример
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#pragma once
#include <stdlib.h>
#include <string>
 
 namespace primer{
 
using namespace std;
 
class MyQueue
{
        public: 
                       // структура, из элементов которой состоит очередь
                struct Item
                {
                        int Field;
                        Item* Next;
                };
 
                Item* Head;
                Item* Tail;
                int Count;
 
                MyQueue()
                {
                        Head = NULL;
                        Tail = NULL;
                        Count = 0;
                }
 
                void Enqueue(int initField)
                {
                        // создание нового элемента
                        Item* New = new Item;
 
                        // его инициализация 
                        New->Next = NULL;
                        New->Field = initField;
 
                        // если очередь пустая
                        if (Count == 0)
                        {
                                Head = New;
                                Tail = New;
                        }                       
                        // иначе
                        else
                        {
                                Tail->Next = New;
                                Tail = New;
                        }
 
                        Count++;
                }
 
                int Dequeue()
                {
                        int Request = Head->Field;
                        Item* Tmp = Head;
                        
                        Head = Head->Next;
                        delete Tmp;
                        Count--;
 
                        return Request;
                }
 
                void Fill(int Count)
                {
                        for (int i = 0; i < Count; i++)
                                Enqueue((rand()%100)/(rand()%10+1));
                }
 
                string Display()
                {
                        string Result = "";
                        Item* Tmp = Head;                       
                        
                        while (Tmp != NULL)
                        {       
                                char* ch = new char;
                                
                                ch = itoa(Tmp->Field, ch, 10);  
                                Result += ch;
                                Result += " ";
                                Tmp = Tmp->Next;
                        }
 
                        if (Result == "")
                                Result = "NULL";
 
                        return Result;
                }
};
}
в файле формы инклюдишь свой класс, и рядом со всеми юзингами пишешь using namespace primer; //пространство имен твоего класса.должно работать после этого.

Добавлено через 5 минут
создавать надо немного подругому, создаешь обьект
в данной области, перед коструктором формы , а в конструкторе иницилизировать:
C++
1
2
3
4
5
6
7
8
9
10
11
                   
                         MyQueue Q;//обьявляешь обьект
                         Form1(void)
             {
            InitializeComponent();
            //
            //TODO: Add the constructor code here
            //
            Q = gcnew MyQueue(); //иницилизруешь в конструкторе
        
        }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.04.2011, 22:44
Помогаю со студенческими работами здесь

Как использовать в форме 3d модели
Как использовать в форме 3d модели?

Использовать dataGridView в другой форме
Есть две формы и две таблицы, нужно во второй форме, использовать таблицу первой формы, подскажите, пожалуйста, как это сделать.

Как использовать запрос в форме
Есть некая форма. Источником записей является таблица. Надо проанализировать эту таблицу с помощью груповых операций (делается запрос) ...

Можно ли использовать C# юзерконтрол в WPF форме?
Здравствуйте. Собственно вопрос. Имеется приложение на WPF. Имеется кастомный юзерконтрол на C#. Можно ли его поместить на WPF...

Строку из textbox использовать на другой форме
Подскажите как можно реализовать следующее. На второй форме пользователь вводит в textbox строку типа &quot;Data...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru