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

<Template>. Ошибка компиляции - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Объясните пожалуйста что делает функция http://www.cyberforum.ru/cpp-beginners/thread607726.html
и если это какая то формула, то можно ссылку на неё int letterFromNumber(int number, int index, int n) { int num = number / (int)pow((double)n,index); return num % n; }
C++ inline функции vs инструкции inline функций Здравствуйте. Чтобы не писать повторно код, нужно использовать функции. Но если функции компактные, то их лучше делать inline функциями, т. к. inline функции быстрее обычных. Но как я понимаю, inline функции все равно работают медленнее, чем их инструкции, вставленные на место их вызова. Так ли это? И каким образом создаются локальные переменные inline функций, ведь в стеке нового блока при их... http://www.cyberforum.ru/cpp-beginners/thread607722.html
Различие глобальной и глобальной статической переменной C++
у нас есть заголовочный файл со стражами, допустим global.h , его используют несколько других хейдеров и с++ файлов . когда там описаны переменные без оператора static линковщик выдаёт ошибку что это переменная объявлена там то там то. если static стоит , то такой проблемы не возникает. в чём различие при объявление глобальной и глобальной статической переменной?
Функционально-подобные макросы C++
Есть переменная std::string Log; и есть другие переменные, или параметры функции. Например, int x; int y; Можно ли написать макрос, заменяющий Log<<LOG(x); на Log<<"<x>"<<std::endl<<"<value>"<<x<<"</value>"<<std::endl<<"<adress>"<<(void *)&x<<"</adress>"<<std::endl<<"</x>"<<std::endl;, а Log<<LOG(y); на Log<<"<y>"<<std::endl<<"<value>"<<y<<"</value>"<<std::endl<<"<adress>"<<(void...
C++ Деление комплексных чисел http://www.cyberforum.ru/cpp-beginners/thread607690.html
Вот код #include <iostream> #include <math> using namespace std; typedef struct { float re, im; } cmplx; cmplx cmplx_div( cmplx c, cmplx d ){ float r, p; cmplx res;
C++ Контроль ошибок при вводе Появился такой вопрос..как проконтролировать пользователя чтоб тот не вводил где не надо символы. if(cin.fail()) cout<<"Только число!\n"; попробывал по такому принципу не получилось..может кто подскажет как лучше всего реализовать данный вопрос?) подробнее

Показать сообщение отдельно
Leeto
7 / 7 / 0
Регистрация: 23.12.2011
Сообщений: 372
Записей в блоге: 1
17.06.2012, 17:03  [ТС]     <Template>. Ошибка компиляции
Цитата Сообщение от zss Посмотреть сообщение
Добавьте в шаблон объявление m_data:
C++
1
2
3
4
5
6
template <class Type=double> class Array
{
private:
    int m_size;
    Type* m_data;
...
И перегрузите в классе Point операцию вывода в поток
После этого откомпилируется.


Компилятор вроде не ругается больше так сильно... единственное что ошибку выдает
1>------ Build started: Project: HP_4.2a, Configuration: Release Win32 ------
1>TestArray.obj : error LNK2001: unresolved external symbol "public: __thiscall Array<class Point>::~Array<class Point>(void)" (??1?$Array@VPoint@@@@QAE@XZ)
1>C:\all my\с++\HA level 6\Solution\Level 6\Release\HP_4.2a.exe : fatal error LNK1120: 1 unresolved externals
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
и какое то дурное сообщение появляется в консоле см приложение
что это ?

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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
// Array.h
// Templated Array class containging Ts
#include <sstream>
#include <iostream>
 
#ifndef Array_H
#define Array_H
 
template <class Type> class Array
{
private:
Type* m_data;
int m_size; 
 
public:
Array();
Array(int new_size); 
void SetElement(Type& type_object, int index); 
const Type& GetElement(int index) const; 
~Array();
};
 
 
#ifndef Array_cpp 
#include "array.cpp"
#endif
 
#endif
 
//array.cpp
#include "array.h"
#include <sstream>
#include <iostream>
using namespace std;
#ifndef Array_CPP
#define Array_CPP
 
template <class Type>
Array<Type>::Array()                                     
{
    m_size = 10;
     m_data = new Type[m_size];
}
 
template <class Type> 
Array<Type>::Array(int new_size)                    
{
    new_size = m_size;
    m_data = new Type[m_size];
}
 
 
template <class Type> 
void Array<Type>::SetElement(Type& type_object, int index)
{
    try
    {
        if (index >= m_size){throw 11;} 
        m_data[index] = type_object;
        cout << "Set Element " << type_object  << endl;
    }
     catch (int x )
     {
        cout << "ERROR" << x << " ignore the set, because index of element bigger then massive size"<< endl;
     }
}
template <class Type> 
const Type& Array<Type>::GetElement(int index) const
{
    try 
    {
        if (index > m_size || index < 0){ throw 1;} 
    } 
    catch (double x)
    {
    cout << "index incorrect, index too big or too small " << x << endl; 
    }  
    return m_data[index];
}
#endif Array_CPP
 
        //main.cpp
        #include <iostream>
        #include <sstream>
        #include "array.h"
        using namespace std;
 
    class Point
{
private:
    double m_x;                                
    double m_y;                                
public:
    // Constructors
    Point(): m_x(0), m_y(0) {};                            
    Point(double new_x, double new_y) : m_x(new_x), m_y(new_y) {};
    friend ostream& operator << (ostream& os, const Point& point)
{
    return os << point.ToString();
}
    std::string Point::ToString(void) const                // create a string representation of a point
{
// create a string like: “Point(1.5, 3.9)”
      std::ostringstream os;
    os << m_x << " , " << m_y;
    std::string double_string = os.str();
 
    return "Point(" + double_string + ")";
}
};
 
 
        int main()
        {
            Point *p1 = new Point (1,12);
                cout << endl; 
            Array<Point> arr1[1];
            arr1[1].SetElement(*p1,0);
                cout << endl;
            arr1[1].GetElement(0) ; 
            delete p1;
            return 0;
        }
Миниатюры
<Template>. Ошибка компиляции  
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru