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

Наследование между шаблоном и классом - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Написать функцию поиска строки в форме перегруженной операции индексирования http://www.cyberforum.ru/cpp-beginners/thread610399.html
Для класса mystring {int len; char**str}; написать функцию поиска строки в форме перегруженной операции индексирования . Помогите, пожалуйста!
C++ Обмен первыми половинами двух стеков Помогите, пожалуйста, нужно написать программу обмены первыми половинами двух стеков. http://www.cyberforum.ru/cpp-beginners/thread610395.html
Целевой explicit конструктор C++
Добрый день. Есть код struct Foo { explicit Foo() { }
Генератор случайных чисел C++
составить генератор случайных чисел, имеющий два члена - границы последовательности. Предоставить метод, который выводит СЧ из диапазона чисел, расположенных между этими членами. Всё это визуализировать.
C++ Подсчет предложений во всех файлах http://www.cyberforum.ru/cpp-beginners/thread610348.html
Помогите доделать программу, задание: Напишите программу, которая открывает текстовый файл-список, содержащий имена файлов по одному на строке. Программа подсчитывает количество предложений во всех файлах и выводит на экран случайно выбранное предложение. Сам я сделал первую часть, а именно, файл-список открывается и подсчитывается кол-во предложений, но вот со второй частью беда. Есть идея,...
C++ Что будет выведено на экран при выполнении следующей программы Что будет выведено на экран при выполнении следующей программы при n = 196, m = 649, k = 255 ? #include <stdio.h> #include <stdlib.h> #include <iostream.h> class Data{ protected: int m; public: Data(int m){ this->m = m;} void print(){ подробнее

Показать сообщение отдельно
Leeto
 Аватар для Leeto
7 / 7 / 0
Регистрация: 23.12.2011
Сообщений: 372
Записей в блоге: 1
20.06.2012, 20:17  [ТС]     Наследование между шаблоном и классом
Цитата Сообщение от DU Посмотреть сообщение
ну вам же уже писали сегодня. не нужно этого делать, потому что это уже делается в базовом классе. в нем и выделение памяти происходит, и ее удаление, и обработка копирования.
по поводу ошибок с кривой инициализацией тоже уже писали. вы в конструкторе производного класса в списке инициализации пытаетесь проинициализировать поля базового класса. так делать нельзя. можно им какое-то значение в теле конструктора присвоить. но и это криво, потому что у базового класса Array<Point> уже есть все необходимые конструкторы и в списке инициализации PointArray их и нужно вызвать

C++
1
2
3
4
5
6
class PointArray : public Array<Point>
{
public:
  PointArray() : Array<Point>() {}
  PointArray(unsigned size) : Array<Point>(size) {}
};
// [CODE]
//
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
// PointArray1.h
#ifndef POINTARRAY1_H
#define POINTARRAY1_H
 
#include "array.h"
#include <math.h>
 
 
class PointArray: public Array<Point>
 
{
    public: 
        PointArray(): Array<Point>() {}
        PointArray(int  size) : Array<Point>( size) {}
       ~PointArray(); 
      //  PointArray& operator=(const Point Array& ar); 
        PointArray operator *(double factor) const;   
        void Lenght() ;
};
 
 
 
 
 
/*PointArray& PointArray::operator=(const PointArray& ar) 
{
     Array<Point>::operator = (ar);  // call base class assignment operator
     return *this;
}
*/
 
PointArray::~PointArray()
{
  //Technically, the if is not necessary
  if(m_data)
  {
    delete[] m_data;
    m_data = 0;
  }
  //Not necessary either, but just to be clean
  m_size = 0;
}
 
 
PointArray PointArray::operator *(double factor) const
{
   PointArray output(Array<Point>::Size());
   for(int i=0; i<Array::Size(); i++)
   {
      output[i] = (*this)[i] * factor;
      //return output;
   }
   return output;
}
 
void  PointArray::Lenght() 
{
    PointArray answ1;
    double  qResult;
    for(int i=0; i+1<answ1.m_size; i++)
    {
        qResult = (answ1[i+1].GetX() * answ1[i+1].GetX() + answ1[i+1].GetY() * answ1[i+1].GetY()) - (answ1[i].GetX() * answ1[i].GetX() + answ1[i].GetY() * answ1[i].GetY());
    }
    //double Result;
//   Result = sqrt(qResult);
     cout <<  qResult;
}
 
#endif //PointArray1_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
//main.cpp
 
        #include "point.h"
    //  #include "Array.h"
        #include "array.cpp"
        #include <exception>
        #include "PointArray1.h"
        #include <iostream>
 
        using namespace std;
int main()
{
             
    PointArray pArray1(5);
    
    
    for(int i=0; i<pArray1.Size(); i++) 
        pArray1[i] = Point(2*i, 2*i);
 
    
 
        PointArray answ1 = pArray1 * 3;
    
    for(int i=0; i<answ1.Size(); i++)
    {
        cout << answ1[i]<< endl;    
    }
 
    answ1.Lenght();
 
    return 0;
}

Все вроде ок копилируется только что то не хочет ратать функция длины
Выглядит это так (см принтскрин)
Миниатюры
Наследование между шаблоном и классом  
 
Текущее время: 18:55. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru