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

Ошибка LNK2019 в многофайловом проекте - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Запись строковой переменной в файл http://www.cyberforum.ru/cpp-beginners/thread1171889.html
String z ; z= Edit5->Text.c_str(); FILE * ptrFile = fopen("1.txt", "r"); if (ptrFile != NULL) { fputs(z.c_str(), ptrFile); // записать строку в файл fclose (ptrFile); }
C++ Распечатать данные в массиве сведения, используя указанный образец Бился-бился,не добился результата. Пожалуйста помогите. Задан массив, содержащий в себе сведения о сотрудниках учреждения такого образца: фамилия (пробел) имя (пробел) отчество, фамилия (пробел) имя (пробел) отчество ... Распечатать эти сведения, используя образец: имя (пробел) отчество (пробел) фамилия, имя (пробел) отчество (пробел) фамилия, ... http://www.cyberforum.ru/cpp-beginners/thread1171883.html
C++ Выбор оптимальной структуры данных
Здравствуйте! Задача состоит в следующем. Есть большой файл (~68 mb) с текстом. Нужно посчитать сколько раз встречается каждое слово в тексте и вывести эту информацию в формате "слово :: количество". Причем вывод должен быть отсортирован в алфавитном порядке. Я попробовал реализовать через двусвязный список, но файл обрабатывается довольно-таки долго: файла ~ 68,6 Мб t1 ::...
C++ Не пойму почему перменная d изменяет значения
// Kursovay_2.cpp: определяет точку входа для консольного приложения. //После выхода из функции graf_null изменяется перменная d #include "stdafx.h" #include <iostream> #include <conio.h> using namespace std; struct list{
C++ Написать программу, формирующую список, куда входят по одному разу элементы, присутствующие в обоих списках http://www.cyberforum.ru/cpp-beginners/thread1171870.html
Ребят, прошу вашей помощи. Я плохо еще разбираюсь в односвязных списках. Мне просто программу с функциями нужно написать, которая формирует список Р. В этот список входят по одному разу элементы, которые одновременно входят в списки Р1 и Р2. Я уже очень долго пытаюсь понять эти списки. Вот пыталась написать что-то свое: // ConsoleApplication1.cpp: определяет точку входа для консольного...
C++ Как назначить элементу коплексного массива определенное значение #include <complex> std::complex<double>* in=new std::complex<double> ; //Чтобы установить только real нужно: in= 1; //Как установить ТОЛЬКО imag? //in.imag()= 8; Как правильно нужно написать чтобы получить рабочий код??? подробнее

Показать сообщение отдельно
viktorius
2 / 2 / 2
Регистрация: 24.02.2013
Сообщений: 105
11.05.2014, 02:25     Ошибка LNK2019 в многофайловом проекте
Смысл: Мне нужно создать абстрактный класс контейнер, на его основе конкретные классы, далее создать абстрактный класс итератор и для каждого класса контейнера свой итератор.
(для простоты оставил только один конкретный контейнер и итератор) При компиляции выходит ошибка
C++
1
Ошибка  1   error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall Vector::Iterv::Iterv(int *)" (??0Iterv@Vector@@QAE@PAH@Z) в функции "public: virtual class Collect::Iterat & __thiscall Vector::Begin(void)" (?Begin@Vector@@UAEAAVIterat@Collect@@XZ)    vector.obj
Подключаю только то что здесь выложил
Помогите пожалуйста решить проблему

файлы
C++
1
2
3
4
5
6
7
8
#include "vector.h"
 
int main()
{
    Vector vv;
    system("pause");*/
    return 0;
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#ifndef ITERAT_H
#define ITERAT_H
 
class Iterat
{
public:
    virtual int Getelem() = 0;//значение элемента
    virtual Iterat &Next() = 0;//++
};
 
#endif
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#ifndef COLLECT_H
#define COLLECT_H
 
class Collect
{
public:
    #include "iterat.h"
    virtual ~Collect() {};
    virtual Iterat &Begin() = 0;
    virtual Iterat &End() = 0;
    virtual void Add(int) = 0;//добавление
    virtual int Find(int) const = 0;//поиск
    virtual int Size() const = 0;//размер
    virtual int Del(int) = 0;//удаление (и возвращение)
    virtual void Del_all() = 0;//удалить все
};
 
#endif
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
#include <iostream>
#include "collect.h"
#ifndef VECTOR_H
#define VECTOR_H
 
class Vector : public Collect
{
    int *vec, size, top;
    static const int n = 10;
public:
    #include "iterv.h"
    Vector();
    Vector(int);
    ~Vector();
    Vector(const Vector &);
    Vector &operator = (const Vector &);
    int operator [] (int);
    Iterat &Begin();
    Iterat &End();
    void Add(int);
    int Find(int) const;
    int Size() const;
    int Del(int);
    void Del_all();
};
 
#endif
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#include <iostream>
#include "vector.h"
using namespace std;
 
Vector::Vector(): top(0), size(0), vec(0)
{}
 
Vector::Vector(int t) : top(0)
{
    vec = new int[size = t];
    for(int i = 0; i < size; i++)
        vec[i] = 0;
}
 
Vector::~Vector()
{
    size = top = 0;
    delete [] vec;
    vec = 0;
}
 
Vector::Vector(const Vector &ob) : size(ob.size)
{
    vec = new int[size];
    for(top = 0; top < ob.top; top++)
        vec[top] = ob.vec[top];
}
 
Vector &Vector::operator = (const Vector &ob)
{
    if(this != &ob)
    {
        delete [] vec;
        size = ob.size;
        vec = new int[size];
        for(top = 0; top < ob.top; top++)
            vec[top] = ob.vec[top];
    }
    return *this;
}
 
void Vector::Add(int ell)
{
    if(!(size - top))
    {
        int *t = vec;
        vec = new int[size += n];
        for(int i = 0; i < top; i++)
            vec[i] = t[i];
        delete [] t;
    }
    vec[top++] = ell;
}
 
int Vector::Size() const
{
    return top;
}
 
int Vector::Find(int p) const
{
    for(int i = 0; i < top; i++)
        if(vec[i] == p)
            return vec[i];
    return 0;
}
 
int Vector::Del(int i)
{
    if(size && (size - top > n + n))
    {
        int *t = vec;
        vec = new int[size -= n];
        for(int j = 0; j < top; j++)
            vec[j] = t[j];
        delete [] t;
    }
    if(i > -1 && i < top)
    {
        --top;
        int t = vec[i];
        for(int j = i; j < top; j++)
            vec[j] = vec[j + 1];
        return t;
    }
    return 0;
}
 
void Vector::Del_all()
{
    top = 0;
}
 
Vector::Iterat &Vector::Begin()
{
    return Iterv(vec);
}
 
Vector::Iterat &Vector::End()
{
    return Iterv(vec + size);
}
 
int Vector::operator [] (int j)
{
    return (top > j && j > -1) ? vec[j] : 0;
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include "iterat.h"
#ifndef ITERV_H
#define ITERV_H
 
class Iterv : public Iterat
{
    int *temp;
public:
    Iterv();
    Iterv(int *);
    int Getelem();
    Iterat &Next();
};
 
#endif
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include "iterv.h"
using namespace std;
 
Iterv::Iterv() : temp(0)
{}
 
Iterv::Iterv(int *v) : temp(v)
{}
 
Iterat &Iterv::Next()
{
    ++temp;
    return *this;
}
 
int Iterv::Getelem()
{
    return *temp;
}
Привожу структуру проекта
Миниатюры
Ошибка LNK2019 в многофайловом проекте  
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 14:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru