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

пара ошибок при риализации графа - C++

Восстановить пароль Регистрация
 
blackbanny
128 / 115 / 2
Регистрация: 14.11.2010
Сообщений: 707
12.06.2011, 11:46     пара ошибок при риализации графа #1
пишу реализацию M-графа, вроде все правильно, но выскакивает 4 ошибки:
Код
1>MatrixGraph.obj : error LNK2005: "public: __thiscall MatrixGraph::MatrixGraph(int)" (??0MatrixGraph@@QAE@H@Z) already defined in main.obj
1>MatrixGraph.obj : error LNK2005: "public: virtual bool __thiscall MatrixGraph::hasArc(int,int)const " (?hasArc@MatrixGraph@@UBE_NHH@Z) already defined in main.obj
1>MatrixGraph.obj : error LNK2005: "public: virtual void __thiscall MatrixGraph::addArc(int,int)" (?addArc@MatrixGraph@@UAEXHH@Z) already defined in main.obj
1>C:\Documents and Settings\budkа\Мои документы\Visual Prolog Projects\Graf\Debug\Graf.exe : fatal error LNK1169: one or more multiply defined symbols found
вот сам код:
main.cpp
C++
1
2
3
4
5
6
7
#include <iostream>
#include "MatrixGraph.cpp"
using namespace std;
void main()
{
    MatrixGraph graph(10);
}
graph.h:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#pragma once
class Graph
{
public:
    //Функция addArc позволяет добавить к графу новую дугу, 
    //ведущую из вершины с номером from в вершину с номером to.
 
    virtual void addArc(int from, int to) = 0;
 
    //Функция hasArc позволяет проверить, имеется ли в графе дуга ведущая
    //из вершины с номером from в вершину с номером to.
 
    virtual bool hasArc(int from, int to) const = 0;
 
    //Функция vertexCount выдает число вершин графа
//    virtual int vertexCount() const = 0;
};
MatrixGraph.h:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include "graph.h"
class MatrixGraph: public Graph
{
    bool **graph;
    int vertexNumber;
 
public:
    //Конструктор с параметрами - количество вершин графа.
    MatrixGraph(int V);
 
    //Количество вершин постоянно и содержится в поле vertexNumber
    //int vertexCount() const (return vertexNumber;}
 
    //Остальные виртуальные функции, реальзацияю которых требуется
    //предоставить при определении конкретного представлениия графа
    void addArc(int from, int to);
    bool hasArc(int from, int to) const;
};
MatrixGraph.cpp:
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
#include "MatrixGraph.h"
//Реализация конструктора - заказ и инициализация памяти 
//под двумерный массив логических значений
MatrixGraph::MatrixGraph(int V)
{
    graph = new bool*[vertexNumber = V];
    for (int i = 0; i < V; i++)
    {
        bool *row = graph[i] = new bool[V];#include "MatrixGraph.h"
//Реализация конструктора - заказ и инициализация памяти 
//под двумерный массив логических значений
MatrixGraph::MatrixGraph(int V)
{
    graph = new bool*[vertexNumber = V];
    for (int i = 0; i < V; i++)
    {
        bool *row = graph[i] = new bool[V];
        for (int j = 0; j < V; j++)
        {
            row[j] = false;
        }
    }
}
 
bool MatrixGraph::hasArc(int from, int to) const
{
    if (from < 0 || from >= vertexNumber || to < 0 || to >= vertexNumber)
        return false; //Неправильно заданы номера вершин
    return graph[from][to];
}
 
void MatrixGraph::addArc(int from, int to)
{
    if (from < 0 || from >= vertexNumber || to < 0 || to >= vertexNumber)
        return; //Невозможно добавить дугу
    graph[from][to] = true;
}
        for (int j = 0; j < V; j++)
        {
            row[j] = false;
        }
    }
}
 
bool MatrixGraph::hasArc(int from, int to) const
{
    if (from < 0 || from >= vertexNumber || to < 0 || to >= vertexNumber)
        return false; //Неправильно заданы номера вершин
    return graph[from][to];
}
 
void MatrixGraph::addArc(int from, int to)
{
    if (from < 0 || from >= vertexNumber || to < 0 || to >= vertexNumber)
        return; //Невозможно добавить дугу
    graph[from][to] = true;
}
может в main неправильно конструктор вызываю...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
pito211
 Аватар для pito211
186 / 173 / 8
Регистрация: 22.03.2010
Сообщений: 612
12.06.2011, 11:52     пара ошибок при риализации графа #2
Цитата Сообщение от blackbanny Посмотреть сообщение
MatrixGraph.cpp
хех, у тебя же всего по две копии. Конструктор и
Цитата Сообщение от blackbanny Посмотреть сообщение
bool MatrixGraph::hasArc(int from, int to) const
Цитата Сообщение от blackbanny Посмотреть сообщение
bool MatrixGraph::hasArc(int from, int to) const
Добавлено через 1 минуту
правило одного определение не выполняется. Если ты хочешь перегружать, то входные параметры должны как-то различаться
blackbanny
128 / 115 / 2
Регистрация: 14.11.2010
Сообщений: 707
12.06.2011, 11:58  [ТС]     пара ошибок при риализации графа #3
Цитата Сообщение от pito211 Посмотреть сообщение
правило одного определение не выполняется. Если ты хочешь перегружать, то входные параметры должны как-то различаться
не совсем понял... можешь сказать что поменять...
входные параметры у hasArc?
pito211
 Аватар для pito211
186 / 173 / 8
Регистрация: 22.03.2010
Сообщений: 612
12.06.2011, 12:07     пара ошибок при риализации графа #4
сдаётся мне что тебе просто надо стереть повторные определения. На MatrixGraph.cpp посмотри там всё продублированно почему-то
blackbanny
128 / 115 / 2
Регистрация: 14.11.2010
Сообщений: 707
12.06.2011, 12:13  [ТС]     пара ошибок при риализации графа #5
Цитата Сообщение от pito211 Посмотреть сообщение
сдаётся мне что тебе просто надо стереть повторные определения. На MatrixGraph.cpp посмотри там всё продублированно почему-то
это просто на форуме случайно так вставил, на самом дела MatrixGraph.cpp такой:
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
#include "MatrixGraph.h"
//Реализация конструктора - заказ и инициализация памяти 
//под двумерный массив логических значений
MatrixGraph::MatrixGraph(int V)
{
    graph = new bool*[vertexNumber = V];
    for (int i = 0; i < V; i++)
    {
        bool *row = graph[i] = new bool[V];
        for (int j = 0; j < V; j++)
        {
            row[j] = false;
        }
    }
}
 
bool MatrixGraph::hasArc(int u, int v) const
{
    if (u < 0 || u >= vertexNumber || v < 0 || v >= vertexNumber)
        return false; //Неправильно заданы номера вершин
    return graph[u][v];
}
 
void MatrixGraph::addArc(int from, int to)
{
    if (from < 0 || from >= vertexNumber || to < 0 || to >= vertexNumber)
        return; //Невозможно добавить дугу
    graph[from][to] = true;
}
pito211
 Аватар для pito211
186 / 173 / 8
Регистрация: 22.03.2010
Сообщений: 612
12.06.2011, 12:20     пара ошибок при риализации графа #6
аа... а подключаешь ты что?
Цитата Сообщение от blackbanny Посмотреть сообщение
#include "MatrixGraph.cpp"
.h нужен
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.06.2011, 12:25     пара ошибок при риализации графа
Еще ссылки по теме:

много ошибок при компиляции C++
Ошибка при компиляции графа C++
C++ Несколько ошибок при обработке строк

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

Или воспользуйтесь поиском по форуму:
blackbanny
128 / 115 / 2
Регистрация: 14.11.2010
Сообщений: 707
12.06.2011, 12:25  [ТС]     пара ошибок при риализации графа #7
Цитата Сообщение от pito211 Посмотреть сообщение
.h нужен
точно, что то я затупил)
спасибо)
Yandex
Объявления
12.06.2011, 12:25     пара ошибок при риализации графа
Ответ Создать тему
Опции темы

Текущее время: 20:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru