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

Компиляция 2х файлов - C++

Восстановить пароль Регистрация
 
yleart
 Аватар для yleart
60 / 45 / 1
Регистрация: 07.10.2011
Сообщений: 139
27.12.2012, 19:47     Компиляция 2х файлов #1
main.cpp:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
#include"template_matrix.h"
#include<iostream>
int main() {
    Matrix<int> A(5, 5);
    A.Print();
    return 0;
}

template_matrix.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
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
#ifndef TEMPLATE_MATRIX_H_
#define TEMPLATE_MATRIX_H_
#include<iostream>
#include<string>
#include<time.h>
#include<stdio.h>
#include<stdlib.h>
#include<limits.h>
#include<math.h>
#include<vector>
 
template<typename T> 
class Matrix {
    public:
        Matrix();
        Matrix(int row, int column);
        ~Matrix();
        void Print();
        void Randomize();
        void Gorinich(int size);
        //friend std::istream& operator >> (std::istream& in, Matrix<T> A);
        //friend std::ostream& operator << (std::ostream& out, Matrix<T> A);
    private:
        T** _matrix;
        int _row;//Строки
        int _column;//Столбцы
        void Alloc(int row, int column);
        void Destr();
};
template<typename T> 
Matrix<T>::Matrix() {
    _row = 0;
    _column = 0;
    _matrix = NULL;
}
 
template<typename T> 
Matrix<T>::Matrix(int row, int column) {
    Alloc(row, column);
}
 
template<typename T> 
Matrix<T>::~Matrix() {
    Destr();
}
template<typename T> 
void Matrix<T>::Alloc(int row, int column) {
    _row = row;
    _column = column;
    _matrix = new T* [_row];
    for (int i = 0; i < _row; ++i)
        _matrix[i] = new T [_column];
    
}
template<typename T> 
void Matrix<T>::Destr() {
    for (int i = 0; i < _row; ++i) {
        delete [] _matrix[i];
    }
    delete [] _matrix;
}
/*
template<typename T>
std::istream& operator >> (std::istream& in, Matrix<T> A) {
    Destr();
    in >> _row >> _column;
    Alloc(_row, _column);
    for (int i = 0; i < A._row; ++i)
        for (int j = 0; j < A._column; ++j)
            in >> A._matrix[i][j];
        return in;
}
template<typename T>
std::ostream& operator << (std::ostream& out, Matrix<T> A) {
    for (int i = 0; i < A._row; ++i) {
        for (int j = 0; j < A._column; ++j) 
            out << A._matrix[i][j] << " ";
        out << std::endl;
    }
}*/
template<typename T>
void Matrix<T>::Print() {
    for (int i = 0; i < _row; ++i) {
        for (int j = 0; j < _column; ++j)
            std::cout << _matrix[i][j] << " ";
        std::cout << std::endl;
    }
}
template<typename T>
void Matrix<T>::Randomize() {
    srand(time(0));
    for (int i = 0; i < _row; ++i)
        for (int j = 0; j < _column; ++j) 
            _matrix[i][j] = rand()%100;
}
 
#endif

makefile:
Bash
1
2
3
4
template_matrix.o: template_matrix.h
    g++ -c template_matrix.h
main: main.cpp template_matrix.o template_matrix.h
    g++ -o main main.cpp template_matrix.o
Ошибка:
Bash
1
2
3
template_matrix.o: file not recognized: File format not recognized
collect2: ld returned 1 exit status
make: *** [main] Ошибка 1
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.12.2012, 19:47     Компиляция 2х файлов
Посмотрите здесь:

C++ Раздельная компиляция файлов в проекте. Межмодульное взаимодействие
Раздельная компиляция файлов C++
C++ компиляция
C++ Компиляция
Компиляция нескольких файлов C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
27.12.2012, 19:50     Компиляция 2х файлов #2
Зачем отдельно компилировать заголовочник? Тем более, с шаблоном.
yleart
 Аватар для yleart
60 / 45 / 1
Регистрация: 07.10.2011
Сообщений: 139
27.12.2012, 19:52  [ТС]     Компиляция 2х файлов #3
Соединить в один файл?

Добавлено через 58 секунд
А как отдельно .h файл компилировать?
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
27.12.2012, 19:52     Компиляция 2х файлов #4
Да зачем, он и так подключается. Компилируй один main.cpp.
Yandex
Объявления
27.12.2012, 19:52     Компиляция 2х файлов
Ответ Создать тему
Опции темы

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