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

Разбиение проекта CodeBlocks на файлы - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Builder БД Отчет MS Access в с++ Builder 2010 http://www.cyberforum.ru/cpp/thread1346019.html
Привет! Создал отчет в самой базе Access. Например Report1 Можно ли его вызывать средствами c++ Builder 2010. Сам проект подключен к этой базе данных. Спасибо!
C++ Builder Отчет Crystal Report и c++ Builder 2010 Приветствую! Есть ли возможность применять отчеты crystal report в builder 2010. В builder 6 без проблем было. А в 2010 не знаю как ActivX импортировать. Кто делал пожалуста отзовитесь. Спасибо http://www.cyberforum.ru/cpp/thread1346017.html
C++ Builder Перевести код калькулятора с консоли на форму
#include <stdio.h> #include <stdlib.h> #include <string.h> #define STACK_LENGTH 80 #define BUFFER_LENGTH 81 /* Переменные для хранения стека */ int Stack_Count; int Stack_Array;
Ошибка выполнения libcurl в потоке при динамическом подключении C++ Builder
Всех С новым годом. Имею функцию bool __fastcall TForm3::PostHesh(AnsiString Hesh) { CURL *curl; CURLcode res; UnicodeString contep; TStringList *FileError = new TStringList(NULL);
C++ Builder Полоса прокрутки в неактивном TMemo http://www.cyberforum.ru/cpp/thread1345676.html
Имеется неактивное TMemo, чтобы нельзя было скопировать информацию. Как сделать чтобы ее возможно было читать?(необходима полоса прокрутки). С неактивным мемо она не работает. Как быть?
C++ Builder Поиск нужного текста в компоненте CppWebBrowser Помогите перевести. Суть следующая, организовать поиск нужного текста в компоненте CppWebBrowser1, я не знаю, подойдет ли он, или нет, делфи к сожалению не изучал.. procedure WBFindText(Browser:TWebBrowser; const Direction: Boolean; const FText: String; const SearchScope, Flags: Integer); var Doc: IHTMLDocument2; SelObj: IHTMLSelectionObject; SelRange: IHtmlTxtRange; begin Doc... подробнее

Показать сообщение отдельно
Unsigned
1 / 1 / 0
Регистрация: 21.12.2014
Сообщений: 61

Разбиение проекта CodeBlocks на файлы - C++

03.01.2015, 21:34. Просмотров 674. Ответов 11
Метки (Все метки)

В общем, такая проблема.
Писал класс строки, вроде все работало, но вот когда начал пытаться разбить проект на файлы, вылез лог с ошибкой:
D:\Code_Blocks\CodeBlocks\Programms\Try_1\main.cpp|10|undefined reference to `operator<<(std::ostream&, sample_string)'|

В проекте есть след. файлы: "sample_string.h"
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#define ENTRY_VALUE 10000
#include <iostream>
#include <cstring>
using namespace std;
 
class sample_string{
    char *pointer_to_string;
public:
    explicit sample_string(){ pointer_to_string = new char [2]; }
    explicit sample_string(size_t num){ pointer_to_string = new char [num]; }
    sample_string(const sample_string&);
    ~sample_string(){ delete [] pointer_to_string; }
    sample_string operator+(sample_string);
    sample_string operator=(sample_string);
    sample_string operator=(char*);
    friend ostream &operator<<(ostream&, sample_string);
    friend istream &operator>>(istream&, sample_string&);
    void memory_allocate(size_t);
};
"main.cpp":
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <sample_string.h>
using namespace std;
 
int main()
{
    sample_string str;
 
    cin >> str;
    cout << str;
 
    return 0;
}
"sample_string.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
58
59
60
61
62
63
64
65
66
67
#include "sample_string.h"
 
sample_string sample_string::operator+(sample_string object)
{
    size_t count(0x0);
 
    count = strlen(this->pointer_to_string) + strlen(object.pointer_to_string);
    count++;
 
    sample_string end_obj(count);
 
    strcpy(end_obj.pointer_to_string, strcat(this->pointer_to_string, object.pointer_to_string));
 
    return end_obj;
}
 
sample_string sample_string::operator=(char *str)
{
    size_t count(0x0);
 
    count = strlen(str);
    count++;
 
    this->memory_allocate(count);
 
    strcpy(this->pointer_to_string, str);
 
    return *this;
}
 
sample_string sample_string::operator=(sample_string object)
{
    size_t count(0x0);
    count = strlen(object.pointer_to_string);
    count++;
 
    this->memory_allocate(count);
 
    strcpy(this->pointer_to_string, object.pointer_to_string);
 
    return *this;
}
 
inline ostream &operator<<(ostream &stream, sample_string object)
{
    stream << object.pointer_to_string;
    return stream;
}
 
istream &operator>>(istream &stream, sample_string &object)
{
    object.memory_allocate(ENTRY_VALUE);
    stream >> object.pointer_to_string;
    return stream;
}
 
inline sample_string::sample_string(const sample_string &obj)
{
    pointer_to_string = new char [strlen(obj.pointer_to_string)];
    strcpy(pointer_to_string, obj.pointer_to_string);
}
 
inline void sample_string::memory_allocate(size_t num)
{
    delete [] pointer_to_string;
    pointer_to_string = new char [num];
}
А вот так выглядел код до того, как я его разбил: (это рабочий код)

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
#include <iostream>
#include <cstring>
#define ENTRY_VALUE 10000
using namespace std;
 
class sample_string{
    char *pointer_to_string;
public:
    explicit sample_string(){ pointer_to_string = new char [2]; }
    explicit sample_string(size_t num){ pointer_to_string = new char [num]; }
    sample_string(const sample_string&);
    ~sample_string(){ delete [] pointer_to_string; }
    sample_string operator+(sample_string);
    sample_string operator=(sample_string);
    sample_string operator=(char*);
    friend ostream &operator<<(ostream&, sample_string);
    friend istream &operator>>(istream&, sample_string&);
    void memory_allocate(size_t);
};
 
sample_string sample_string::operator+(sample_string object)
{
    size_t count(0x0);
 
    count = strlen(this->pointer_to_string) + strlen(object.pointer_to_string);
    count++;
 
    sample_string end_obj(count);
 
    strcpy(end_obj.pointer_to_string, strcat(this->pointer_to_string, object.pointer_to_string));
 
    return end_obj;
}
 
sample_string sample_string::operator=(char *str)
{
    size_t count(0x0);
 
    count = strlen(str);
    count++;
 
    this->memory_allocate(count);
 
    strcpy(this->pointer_to_string, str);
 
    return *this;
}
 
sample_string sample_string::operator=(sample_string object)
{
    size_t count(0x0);
    count = strlen(object.pointer_to_string);
    count++;
 
    this->memory_allocate(count);
 
    strcpy(this->pointer_to_string, object.pointer_to_string);
 
    return *this;
}
 
inline ostream &operator<<(ostream &stream, sample_string object)
{
    stream << object.pointer_to_string;
    return stream;
}
 
istream &operator>>(istream &stream, sample_string &object)
{
    object.memory_allocate(ENTRY_VALUE);
    stream >> object.pointer_to_string;
    return stream;
}
 
inline sample_string::sample_string(const sample_string &obj)
{
    pointer_to_string = new char [strlen(obj.pointer_to_string)];
    strcpy(pointer_to_string, obj.pointer_to_string);
}
 
inline void sample_string::memory_allocate(size_t num)
{
    delete [] pointer_to_string;
    pointer_to_string = new char [num];
}
 
int main()
{
    sample_string x;
 
    cin >> x;
    cout << x;
 
    return 0;
}
Может кто сказать, как убрать эту ошибку или как перераскидать код?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 20:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru