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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.05.2012, 22:16   #1
krow7
Пользователь
 
Регистрация: 31.03.2012
Сообщений: 11
По умолчанию Ошибка повторного объявления

Доброго времени суток, форумчане!

Ситуация такая: пишу класс для матриц и столкнулся с одной штукенцией. Компилятор говорит, что методы класса объявлены несколько раз, хотя это не так. В-общем, смотрите сами.

Matrix.h
Код:
#pragma once

ref class Matrix
{
public:
	Matrix(int height, int width);
	Matrix^ Set(int x, int y, int value);
	int Get(int x, int y);
	System::String^ Print(void);

private:
	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);
}

Matrix^ Matrix::Set(int x, int y, int value)
{
	this->Array[x,y] = value;
	return this;
}

int Matrix::Get(int x, int y)
{
	return this->Array[x,y];
}

System::String^ Matrix::Print(void)
{
	System::String^ Temp = "";
	for(int i = 0; i < this->Array->Length; i++)
	{
		for(int j = 0; j < this->Array->Length; j++)
		{
			System::String::Concat(Temp, " ", System::Convert::ToString(this->Array[i,j]));
		}
		System::String::Concat(Temp, "\n");
	}
	Temp->Trim();
	return Temp;
}
test.cpp (главный файл)
Код:
// test.cpp: главный файл проекта.

#include "stdafx.h"
#include "Matrix.cpp"

using namespace System;

int main(array<System::String ^> ^args)
{
	Matrix^ MyMatrix = gcnew Matrix(2,2);
	for(int i = 0; i < 2; i++)
	{
		for(int j = 0; j < 2; j++)
		{
			MyMatrix->Set(i, j, i*j);
		}
	}
	Console::Write(MyMatrix->Print());
	while(1);
    return 0;
}
Среда: Microsoft Visual Studio 2008.

Вывод:
Компоновка...
test.obj : error LNK2005: "public: __clrcall Matrix::Matrix(int,int)" (??0Matrix@@$$FQ$AAM@HH@Z) уже определен в Matrix.obj
test.obj : error LNK2005: "public: class Matrix ^ __clrcall Matrix::Set(int,int,int)" (?Set@Matrix@@$$FQ$AAMP$AAV1@HHH@Z) уже определен в Matrix.obj
test.obj : error LNK2005: "public: int __clrcall Matrix::Get(int,int)" (?Get@Matrix@@$$FQ$AAMHHH@Z) уже определен в Matrix.obj
test.obj : error LNK2005: "public: class System::String ^ __clrcall Matrix::Print(void)" (?Print@Matrix@@$$FQ$AAMP$AAVString @System@@XZ) уже определен в Matrix.obj
D:\workplace\test\Debug\test.exe : fatal error LNK1169: обнаружен многократно определенный символ - один или более


Кто знает, помогите, пожалуйста, в чем тут грабли.
krow7 вне форума Ответить с цитированием
Старый 11.05.2012, 22:32   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,833
По умолчанию

Код:
#include "Matrix.cpp"
Подключаются хедеры, а не цппшники...
p51x вне форума Ответить с цитированием
Старый 11.05.2012, 22:45   #3
krow7
Пользователь
 
Регистрация: 31.03.2012
Сообщений: 11
По умолчанию

а когда тогда исправить? не подскажете?

UPD: "cpp" на "h" сменил :3
спасибо, запомню на будущее
krow7 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Избежать повторного добавления записи alt5000 PHP 9 03.01.2012 18:42
защита от повторного открытия программы ВалекFCRK Общие вопросы Delphi 7 23.10.2011 14:19
Ошибка при попытке повторного открытии окна ssdm Общие вопросы по Java, Java SE, Kotlin 0 25.01.2010 19:41
Защита от повторного запуска Vladya Помощь студентам 8 24.06.2009 09:04
Ошибка повторного соединения. Nemez Microsoft Office Word 5 24.09.2008 07:31