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

наследование - C++

Восстановить пароль Регистрация
 
azaron
0 / 0 / 0
Регистрация: 21.12.2010
Сообщений: 14
02.04.2011, 12:57     наследование #1
Задача :
Базовый класс:
class Shape2D
{
public:
Shape2D();
virtual ~ Shape2D();
virtual float Area( )= 0;
virtual float Perimeter() = 0;
virtual void PrintMessage();
};
Shape2D() – конструктор Базового класса.
~ Shape2D() – деструктор базового класса.
Area() – возвращает значение площади фигуры.
Perimeter() – возвращает значение периметру фигуры.
PrintMessage() – выводит сообщение о типе фигуры.

Производные классы Triangle и Rectangle
Определить необходимые для производных классов параметры и переопределить необходимые функции.

вот что я написал:
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
//shape.h
#include <math.h>
#include <iostream>
using namespace std;
 
class Shape2D  
{   
public:
    Shape2D()
    {}
    virtual ~ Shape2D()
    {}
    virtual float Area()=0;
    virtual float Perimeter()=0;
    virtual void PrintMessage();
};
 
class Triangle : public Shape2D
{
public:
    Triangle(const Triangle& trngl);
    float Triangle::Area (float a=3, float b=4, float c=5);
    float Triangle::Perimeter(float a=3, float b=4, float c=5);
    virtual void Triangle::PrintMessage();
    virtual ~ Triangle () {}
};
 
class Rectangle : public Shape2D
{
public :
    Rectangle(const Rectangle& rct);
    float   Rectangle::Area( float a=4, float b=5);
    float Rectangle::Perimetr( float a=4, float b=5);
    virtual void Rectangle::PrintMessage();  
  virtual~Rectangle() {}
};
 
//shape.cpp
 
#include "Shape.h"
Triangle::Triangle(const Triangle& trngl)
{
        *this = trngl ;
}
float Triangle::Area ( float a, float b, float c)
    {
        float p=(a+b+c)/2;
        float S=sqrt(p*(p-a)*(p-b)*(p-c));
        return S;
    }
    float Triangle::Perimeter(float a, float b, float c)
    {
        float P=a+b+c;
        return P;
    }
     void Triangle::PrintMessage()
    {
        cout<<"Triangle \n"<<"Area:\n"<<&Triangle::Area<<endl<<"Perimetr:\n"<<&Triangle::Perimeter<<endl;
    }
 
 
 
     Rectangle::Rectangle(const Rectangle& rct)
{
    *this = rct ;
}
     float  Rectangle::Area(float a,float b)
  {
        float S=a*b;
        return S;
  }
  float Rectangle::Perimetr( float a, float b)
  {
      float P=2*(a+b);
      return P;
  }
   void Rectangle::PrintMessage()
  {
 cout<<"Rectangle\n"<<"Area:\n"<<&Rectangle::Area<<endl<<"Perimetr:\n"<<&Rectangle::Perimetr<<endl;
  }
 
//main.cpp
 
#include <iostream>
#include <math.h>
#include <conio.h>
#include "Shape.h"
using namespace std;
 
int main ()
{
    Triangle trngl1(4,5,6);
    Triangle.Area();
}
я понимаю что проблема в меин файле, но не знаю, как описать визов абстрактного класса. но может проблема глубже, я не могу разобраться
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.04.2011, 12:57     наследование
Посмотрите здесь:

C++ Наследование
Наследование C++
C++ наследование
С++ Наследование C++
C++ Наследование
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Unforgiven_00
60 / 60 / 2
Регистрация: 12.10.2010
Сообщений: 129
02.04.2011, 13:31     наследование #2
Цитата Сообщение от azaron Посмотреть сообщение
Triangle trngl1(4,5,6);
Что это такое?
azaron
0 / 0 / 0
Регистрация: 21.12.2010
Сообщений: 14
02.04.2011, 14:05  [ТС]     наследование #3
пробивал так визвать функцию с заданими параметрами
Unforgiven_00
60 / 60 / 2
Регистрация: 12.10.2010
Сообщений: 129
02.04.2011, 20:12     наследование #4
Цитата Сообщение от azaron Посмотреть сообщение
пробивал так визвать функцию с заданими параметрами
Сначала напишите его(конструктор) в класах.
Yandex
Объявления
02.04.2011, 20:12     наследование
Ответ Создать тему
Опции темы

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