Форум программистов, компьютерный форум, киберфорум
C++/CLI Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
 Аватар для Kris_Tulko
1 / 1 / 0
Регистрация: 02.09.2013
Сообщений: 108

Двумерный массив как поле класса

03.06.2015, 20:21. Показов 2572. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Подскажите, пожалуйста.


Я хочу использовать вектор(stl) для работы с матрицами, но в моём случае матрица - поле класса, и поэтому её не объявить так:

C++
1
std::vector<std::vector<int>> IncidenceMatrix
Я попробовала объявить матрицу вне класса, что не очень хорошо для моей задачи. Всё равно это получилось сделать только в функции main, а модуль с классом подключён даже не в main, а выше. Я вообще не поняла, куда он автоматически подключился. В общем, в методах класса не выходит работать с этим вектором, который объявлен в main:/

__
Если просто объявить двойной указатель, то правильно ли инициализировать так:
C++
1
point = 0;
Что-то NULL не подсвечивается:/
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.06.2015, 20:21
Ответы с готовыми решениями:

Как создать статический двумерный массив объектов одного класса?
Есть определенное множество объектов типа tile^. Нужно их положить в двумерный массив с определенным размером, то есть статический, как это...

Можно ли сделать поле класса параметром функции-члена этого же класса?
Здраствуйте. ref class MyClass { private: int i, j; array&lt;array&lt;int&gt;^&gt;^ X1; array&lt;array&lt;int&gt;^&gt;^ X2; public: ...

Двумерный массив как поле класса C#
Здравствуйте, столкнулся с проблемой что не могу получить двумерный массив из объекта класса Есть библиотека using System; ...

7
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
03.06.2015, 21:15
Kris_Tulko, если вы пишите на C++/CLI то лучше использовать как поле класса управляемый двумерный массив или vector из STL для CLR. Он находится в пространстве имен cliext,а не std как в стандартном C++.
А не получаеться сделать обычный вектор полем класса,потому,что неуправляемый объект не может быть членом управляемого.

Добавлено через 33 секунды
Цитата Сообщение от Kris_Tulko Посмотреть сообщение
Если просто объявить двойной указатель, то правильно ли инициализировать так:
Нет. NULL либо nullptr из C++11.
1
 Аватар для Kris_Tulko
1 / 1 / 0
Регистрация: 02.09.2013
Сообщений: 108
04.06.2015, 16:56  [ТС]
NULL либо nullptr
Странно, но у меня подсвечивает только nullptr:/ В общм, работает
не получается сделать обычный вектор полем класса, потому что неуправляемый объект не может быть членом управляемого
Я добавляла класс через "Проект-> Добавить класс". А что делает этот класс управляемым, а не обыкновенным, я ничего такого не нахожу в коде:/
0
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
04.06.2015, 17:35
Лучший ответ Сообщение было отмечено tezaurismosis как решение

Решение

Цитата Сообщение от Kris_Tulko Посмотреть сообщение
А что делает этот класс управляемым, а не обыкновенным, я ничего такого не нахожу в коде
Класс становиться управляемым если он объявлен с ключевыми словами value class или ref class. Если их нет,то класс самый обычный и не может работать с управляемыми типами данных.
Вполне вероятно что это вообще никак не относиться к вашей проблеме

Цитата Сообщение от Kris_Tulko Посмотреть сообщение
Странно, но у меня подсвечивает только nullptr:/ В общм, работает
Да. В любом случае мне следует дополнить свой ответ: nullptr это нулевой указатель не только в C++11 но и в C++/CLI. Т.е. если NULL не проходит,значит класс все-таки управляемый.
1
 Аватар для Kris_Tulko
1 / 1 / 0
Регистрация: 02.09.2013
Сообщений: 108
05.06.2015, 03:32  [ТС]
Да, он так объявлен: ref class

Добавлено через 4 часа 23 минуты
C++
1
#include <cliext/vector>
Такая ошибка:
cliext: не является именем класса или пространства имен
C++
1
using namespace cliext;
На это: "Нет такого пространства имён"
0
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
05.06.2015, 08:57
Лучший ответ Сообщение было отмечено tezaurismosis как решение

Решение

Цитата Сообщение от Kris_Tulko Посмотреть сообщение
На это: "Нет такого пространства имён"
Странно. У меня все работает:
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
#include <cliext/vector>
 
using namespace System;
using namespace cliext;
 
ref class Test
    {
    public:
        Test();
        void SetVec(vector<int> ^newvec);
        vector<int> GetVec();
    private:
        vector<int> vec;
    };
Test::Test()
    {
    
    }
 
void Test::SetVec(vector<int> ^newvec)
    {
    vec = newvec;
    }
vector<int> Test::GetVec()
    {
    return vec;
    }
 
int main()
{
vector<int>^ vec = gcnew vector<int>(2,1);
Test^ obj = gcnew Test();
 
 
obj->SetVec(vec);
auto X = obj->GetVec();
for each(auto i in X)
    Console::Write(i+"\t");
 
Console::WriteLine();
vec->push_back(5);
X = obj->GetVec();
for each(auto i in X)
    Console::Write(i+"\t");
 
Console::WriteLine();
obj->SetVec(vec);
X = obj->GetVec();
for each(auto i in X)
    Console::Write(i+"\t");
Console::ReadLine();
    return 0;
}
1
 Аватар для Kris_Tulko
1 / 1 / 0
Регистрация: 02.09.2013
Сообщений: 108
18.06.2015, 01:22  [ТС]
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
#pragma once
 
#include <cliext/vector>
#include <ctime>
 
 
 
namespace pjx {
 
    using namespace System;
    using namespace cliext;
    using namespace System::ComponentModel;
    using namespace System::Collections;
    using namespace System::Windows::Forms;
    using namespace System::Data;
    using namespace System::Drawing;
    
        public ref class Form1 : public System::Windows::Forms::Form
    {
 
    //........
    private:
 
    vector<vector<float>>^ Matrix; 
              //.........
    
};
 
}
1>pjx.obj : error LNK2020: неразрешенная лексема (0600007D) cliext.vector<cliext::vector<float> >::Clone
1>C:\Users\1\Documents\pjx.exe : fatal error LNK1120: 1 неразрешенных внешних элементов
Why?:/
0
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
21.06.2015, 13:56
Цитата Сообщение от Kris_Tulko Посмотреть сообщение
Why?:/
тот редкий случай,когда ^ нужно убрать:
C++
1
cliext::vector<cliext::vector<float>> Matrix;
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.06.2015, 13:56
Помогаю со студенческими работами здесь

Двумерный массив в динамической памяти как поле класса
Здравствуйте! Вот так можно описать двумерный массив в дин.памяти. class nameClass { public: MapPlaceTp ** roomMap; ...

Массив объектов одного класса как поле другого класса
Доброе время суток. Мне тут в универе задали лабу, нужно создать класс полем которого будет массив объектов класса из предыдущей лабы и в...

Массив как поле класса
Мне нужно сделать : -Три поля: 1.Массив целых чисел. 2.Сумма элементов массива. 3.Длинна массива. -Методы: # Конструктор (для...

Массив как поле класса
Например, имеется класс с полем массивом размерностью 10 на 10. class massiv { private: int mas; public: ... }; ...

Массив как поле класса
Здравствуйте. Пишу класс на Яве, называющийся vector. Столкнулся с такой проблемой: у меня есть 9 полей определенные для задания координат...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru