Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.60
UrbanLynx
1 / 1 / 0
Регистрация: 13.02.2013
Сообщений: 29
#1

Функция уже определена в другом файле - C++

25.04.2013, 09:39. Просмотров 1429. Ответов 21
Метки нет (Все метки)

Который день бьюсь и не могу найти ответа, подскажите, если знаете.
Есть sparseMatrix.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
#pragma once
 
#include <vector>
#include <iostream>
#include <iomanip>
#include <sstream>
 
using namespace std;
 
class RowFormatMatrix
{
public:
    RowFormatMatrix(int c=0, int r=0):col(c),row(r),ia(0),ja(0),an(0){};
    RowFormatMatrix(const vector<int>& i, const vector<int>& j, const vector<double>& n, int c, int r):ia(i),ja(j),an(n),col(c),row(r){};
    RowFormatMatrix(ostream& ins);
    ~RowFormatMatrix(){};
 
    friend RowFormatMatrix operator+(const RowFormatMatrix& a, const RowFormatMatrix& b);
    friend void printUsualMatrix(const RowFormatMatrix& matrix);
    friend void symbolicPart(const RowFormatMatrix& a, const RowFormatMatrix& b, RowFormatMatrix& c);
    friend void numericalPart(const RowFormatMatrix& a, const RowFormatMatrix& b, RowFormatMatrix& c);
private:
    vector<int> ia; // номер компонента в ja и an, с которого начинается текущая строка
    vector<int> ja; // номера столбцов
    vector<double> an;
    int col, row;
};
 
void symbolicPart(const RowFormatMatrix& a, const RowFormatMatrix& b, RowFormatMatrix& c){...}
 
void numericalPart(const RowFormatMatrix& a, const RowFormatMatrix& b, RowFormatMatrix& c){...}
 
RowFormatMatrix operator+(const RowFormatMatrix& a, const RowFormatMatrix& b){...}
 
void enterUsualMatrix(RowFormatMatrix& matrix){...}
 
void enterRowFormatMatrix(RowFormatMatrix& matrix){...}
 
void printUsualMatrix(const RowFormatMatrix& matrix){...}
Его я включаю в другие файлы, скажем main.cpp, support.h и support.cpp.
Но линковщик выдает ошибки:
Код
1>support.obj : error LNK2005: "void __cdecl symbolicPart(class RowFormatMatrix const &,class RowFormatMatrix const &,class RowFormatMatrix &)" (?symbolicPart@@YAXABVRowFormatMatrix@@0AAV1@@Z) уже определен в main.obj
1>support.obj : error LNK2005: "void __cdecl numericalPart(class RowFormatMatrix const &,class RowFormatMatrix const &,class RowFormatMatrix &)" (?numericalPart@@YAXABVRowFormatMatrix@@0AAV1@@Z) уже определен в main.obj
1>support.obj : error LNK2005: "class RowFormatMatrix __cdecl operator+(class RowFormatMatrix const &,class RowFormatMatrix const &)" (??H@YA?AVRowFormatMatrix@@ABV0@0@Z) уже определен в main.obj
1>support.obj : error LNK2005: "void __cdecl enterUsualMatrix(class RowFormatMatrix &)" (?enterUsualMatrix@@YAXAAVRowFormatMatrix@@@Z) уже определен в main.obj
1>support.obj : error LNK2005: "void __cdecl enterRowFormatMatrix(class RowFormatMatrix &)" (?enterRowFormatMatrix@@YAXAAVRowFormatMatrix@@@Z) уже определен в main.obj
1>support.obj : error LNK2005: "void __cdecl printUsualMatrix(class RowFormatMatrix const &)" (?printUsualMatrix@@YAXABVRowFormatMatrix@@@Z) уже определен в main.obj
Как такое может быть? Ведь есть защита, пробовал и ifndef'ы тоже.
1
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.04.2013, 09:39
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Функция уже определена в другом файле (C++):

Сообщение об ошибке "функция-член уже определена" - C++
Вот код #include &lt;iostream&gt; using namespace std; class Matrix { private: int **Array; int nstr, nstl; public:

Ошибка - "Функция _main уже определена" - C++
#include &lt;iostream&gt; #include &lt;string&gt; using namespace std; void check_weekday(string day) { if (day == &quot;Понедельник&quot; || day ==...

Переменная уже определена в Form_5.obj - C++
Здравствуйте, я наткнулся на следующую проблему и не могу решить. Вот имеется код файла Form_5.h: #ifndef _FORM5_H #define _FORM5_H ...

нужно чтобы функция располагалась до ее вызова, после ее вызова и в другом файле. Как это сделать? - C++
#include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; int n, *c; void fun(int a, int b) { for (int i = 0; i &lt;...

Как одному классу узнать о другом в другом файле, если они не имеют общего наследования - C++
Есть два класса в разных файлах, первому классу нужно знать о втором и использовать указатели типа второго у себя внутри, второму нужно...

Функция setw не определена? - C++
#include &lt;iostream&gt; #include &lt;iomanip&gt; using namespace std; int main() { cout &lt;&lt;setw(5)&lt;&lt;&quot;!!!Hello World!!!&quot; &lt;&lt; endl; // prints...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
veverix
39 / 39 / 2
Регистрация: 14.09.2012
Сообщений: 85
25.04.2013, 19:51 #16
в SparseMatrix.cpp не нужно включать ничего кроме SparseMatrix.h. Все остальное подключается к SparseMatrix.h
0
UrbanLynx
1 / 1 / 0
Регистрация: 13.02.2013
Сообщений: 29
25.04.2013, 20:01  [ТС] #17
Цитата Сообщение от ValeryS Посмотреть сообщение
если нужно могу заслать проект который у меня получился
Зашли, пожалуста. На какой-нибудь файлообменик.
0
ValeryS
Модератор
6631 / 5038 / 466
Регистрация: 14.02.2011
Сообщений: 16,849
25.04.2013, 20:19 #18
Цитата Сообщение от UrbanLynx Посмотреть сообщение
На какой-нибудь файлообменик.
зачем ?
он и суда прекрасно влезет(если немного доработать напильником)
Выбросить паки DEBUG и tst1_1.ncb
0
Вложения
Тип файла: rar tst1_1.rar (7.6 Кб, 3 просмотров)
UrbanLynx
1 / 1 / 0
Регистрация: 13.02.2013
Сообщений: 29
25.04.2013, 20:26  [ТС] #19
Просто чудеса в решете, работает)
Кстати, отличие есть - у тебя хедеры размещены в файлах ресурсов, а не в заголовочных файлах. Зачем так?
0
ValeryS
Модератор
6631 / 5038 / 466
Регистрация: 14.02.2011
Сообщений: 16,849
25.04.2013, 20:37 #20
Цитата Сообщение от UrbanLynx Посмотреть сообщение
Кстати, отличие есть - у тебя хедеры размещены в файлах ресурсов, а не в заголовочных файлах. Зачем так?
я ничего не размещал
взял твой проект из 8 поста
создал пустой проект
скопировал туда твои
main.cpp
sparseMatrixRealisation.cpp
support.cpp
main.h
sparseMatrix.h
sparseMatrixRealisation.h
support.h
запустил на компиляцию и все
даже не разбирался

Добавлено через 1 минуту
Цитата Сообщение от UrbanLynx Посмотреть сообщение
Кстати, отличие есть - у тебя хедеры размещены в файлах ресурсов,
А понял про что ты
это я когда подключал к проекту
папки попутал
даже сразу и не заметил

Добавлено через 3 минуты
если у тебя будут косяки с компиляцией ( а у студии такое бывает)
и очистка проекта не помогает
удали папки Debug Release и файл с расширением ncb
и перезапусти компиляцию
0
UrbanLynx
1 / 1 / 0
Регистрация: 13.02.2013
Сообщений: 29
25.04.2013, 20:38  [ТС] #21
А, ок. В общем Visual Studio такой Visual Studio...
0
ValeryS
Модератор
6631 / 5038 / 466
Регистрация: 14.02.2011
Сообщений: 16,849
25.04.2013, 20:48 #22
Цитата Сообщение от UrbanLynx Посмотреть сообщение
Visual Studio такой Visual Studio...
это они переумничали
хотели создать быструю компиляцию
типа не компилировать все подряд если изменение всего в одной строчке
но иногда эта система дает сбой
как это было у тебя, запомнила старые ошибки и давай их гнать
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.04.2013, 20:48
Привет! Вот еще темы с ответами:

Функция _msize не определена - C++
#include &lt;iostream&gt; #include &lt;cstdlib&gt; #include &lt;functional&gt; using namespace std; int getMaxMinElem(int*,bool);//true-&gt;max,...

Поиск в текстовом файле всех слов, заданных в другом текстом файле - C++
Вообщем такое задание: Поиск в текстовом файле всех слов, заданных в другом текстом файле; Не могу понять почему не работает: ...

Сравнение слов в одном файле со словами в другом файле - C++
Здравствуйте! Суть задачи такая: 1. Первый файл - запросы с городами, второй файл - база городов РФ. Оба txt 2. Найти в запросах все...

Ошибка: error C2129: статическая функция объявлена, но не определена - C++
В помощь начинающим изучать C++ хочу подсказать реальную причину этой ошибки. Так как реально в интернете на форумах рассказывается...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
25.04.2013, 20:48
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru