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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.03.2012, 19:43   #1
krow7
Пользователь
 
Регистрация: 31.03.2012
Сообщений: 11
Плохо Вылетает компилятор

Всем доброго времени суток.
Имеется код в файле Matrix.h:
Код:
public ref class Matrix
{
public:
	Matrix(int height, int width);
	System::String^ toText();
	int getElemByPos(int row, int column);
	int getDimLength(int dim);
	Matrix^ Transpose();
	Matrix^ getSubMatrix(int m1, int n1, int m2, int n2);
	Matrix^ setCell(int height, int width, int value);
	~Matrix();

private:
	int checkBounds(int a, int b);
	array<int,2>^ Array;
};
и код в файле Matrix.cpp:
Код:
#include "stdafx.h"
#include "Matrix.h"

Matrix::Matrix(int height, int width)
{
	this->Array = gcnew array<int,2>(height, width);
}

System::String^ Matrix::toText()
{
	System::String^ str;
	for(int i = 0; i < this->Array->GetLength(0); i++)
	{
		for(int j = 0; j < this->Array->GetLength(1); j++)
		{
			str = str->Concat(str, System::Convert::ToString(this->Array[i][j]));
			str = str->Concat(str, " ");
		}
		str = str->Concat(str, "\n");
	}
	return str;
}
int Matrix::getElemByPos(int row, int column)
{
	if(this->checkBounds(row, column)) return this->Array[row][column];
}
int Matrix::getDimLength(int dim)
{
	if((dim == 0) || (dim == 1))
		return this->Array->GetLength(dim);
}
Matrix^ Matrix::Transpose()
{
	array<int,2>^ tempArray = gcnew array<int,2>(this->Array->GetLength(1), this->Array->GetLength(0));
	for(int i = 0; i < this->Array->GetLength(1); i++)
	{
		for(int j = 0; j < this->Array->GetLength(0); j++)
		{
			tempArray[i][j] = this->Array[j][i];
		}
		}
	delete this->Array;
	this->Array = tempArray;
	return this;
}
Matrix^ Matrix::getSubMatrix(int m1, int n1, int m2, int n2)
{
	if(this->checkBounds(m1, n1) && this->checkBounds(m2, n2))
	{
		int m_bound = m2 - m1 + 1;
		int n_bound = n2 - n1 + 1;
		Matrix^ SubMatrix = new Matrix(m_bound, n_bound);
		for(int i = 0; i < m_bound; i++)
		{
			for(int j = 0; j < n_bound; j++)
			{
				SubMatrix->setCell(i, j, this->getElemByPos(m1 + i, n1 + j));
			}
		}
		return SubMatrix;
	}
}

Matrix^ Matrix::setCell(int height, int width, int value)
{
	if(this->checkBounds(height, width))
	{
		this->Array[height][width] = value;
	}
	return this;
}
Matrix::~Matrix()
{
	delete this->Array;
}
При попытке откомпилировать данное решение (solution то бишь), выскакивает "Прекращена работа программы "Оптимизирующий компилятор Microsoft...", хотя с другими проектами все отлично работает.
Ось: Windows 7
Среда: Microsoft Visual Studio 2008
При создании выбирал Windows Form Application.

Почему компилятор вылетает? Кто с этим сталкивался?
krow7 вне форума Ответить с цитированием
Старый 31.03.2012, 20:17   #2
zvoronz
Пользователь
 
Регистрация: 03.01.2011
Сообщений: 49
По умолчанию

Извиняюсь за оффтоп.

Для чего ты под CLR пишешь на С++? Это же так извращенно смотрится. Этот домик который сразу напоминает PASCAL
zvoronz вне форума Ответить с цитированием
Старый 31.03.2012, 21:34   #3
krow7
Пользователь
 
Регистрация: 31.03.2012
Сообщений: 11
По умолчанию

В универе проходим :D
а по сабжу есть что-нибудь?
krow7 вне форума Ответить с цитированием
Старый 31.03.2012, 22:27   #4
zvoronz
Пользователь
 
Регистрация: 03.01.2011
Сообщений: 49
По умолчанию

У меня 2010 студия. Код Собирается без проблем Так что извиняй
zvoronz вне форума Ответить с цитированием
Старый 31.03.2012, 23:44   #5
krow7
Пользователь
 
Регистрация: 31.03.2012
Сообщений: 11
По умолчанию

тоже ставил 2010, но мне не нравится, что там нет IntelliSense =\
krow7 вне форума Ответить с цитированием
Старый 01.04.2012, 00:24   #6
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

Цитата:
Сообщение от krow7 Посмотреть сообщение
тоже ставил 2010, но мне не нравится, что там нет IntelliSense =\
кто сказал? по-моему там интеллисенса даже через чур

по сабжу: переустановка не спасает? другие типы проектов как компилируются?
counter вне форума Ответить с цитированием
Старый 01.04.2012, 00:32   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
кто сказал? по-моему там интеллисенса даже через чур
в С++ CLI проектах без дополнений интеллисенс отлючен.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 01.04.2012, 00:44   #8
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
в С++ CLI проектах без дополнений интеллисенс отлючен.
мде? значит я давно не открывал с++ cli
counter вне форума Ответить с цитированием
Старый 01.04.2012, 09:53   #9
krow7
Пользователь
 
Регистрация: 31.03.2012
Сообщений: 11
По умолчанию

Переустановку попробую, в других проектах все отлично, компилируется на ура, а именно тут косяк.
krow7 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вылетает Qt Levsha100 Qt и кроссплатформенное программирование С/С++ 2 03.11.2010 18:19
Вылетает System32! k1r1ch Безопасность, Шифрование 8 18.09.2009 08:47
Вылетает ошибка jon_free Операционные системы общие вопросы 3 29.06.2009 23:30
Прога вылетает Fi11eR Паскаль, Turbo Pascal, PascalABC.NET 4 18.06.2009 19:56