Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проблема с наследованием 
:(
    Опции темы
4aineG
Дата 16.6.2009, 10:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 7.8.2008

Репутация: нет
Всего: нет



Помогите пожалуйста!!!
имеется класс Triangle выполняющий операции с треугольниками. 
Задание: нужно образовать производный класс Pentagon - пятиугольники на основе Triangle.
В общем вылазит все время ошибка мол: метод уже определен. и еще вопрос можно ли реализовать класс Pentagon только с тремя точками и ребрами, ведь пятиугольник это посути три треугольника.    

Код

//point.h
#ifndef POINT_H
#define POINT_H
class Triangle;
class Pentagon;
enum ORIENT { LEFT, RIGHT, AHEAD, BEHIND, BETWEEN };
class Point
{
public:
    Point (double x1=0, double y1=0): x(x1),y(y1){}
    void Show() const;
    void operator +=(Point&);
    
    ORIENT Or(Point &, Point &) const;
    Point operator + (Point &);
    Point operator - (Point &);
    double Length() const;
    bool InTr(Triangle &) const;
public:
    double x,y;
};
#endif


//point.cpp
#include <iostream>
#include <math.h>
#include "Point.h"
#include "Triangle.h"
using namespace std;

void Point::Show()const
{
    cout<<x<<";"<<y;
}

void Point::operator +=(Point& p) 
{
    x = x + p.x; 
    y = y + p.y;
}

Point Point::operator +(Point& p) 
{
    return Point(x + p.x, y + p.y);
}
Point Point::operator -(Point& p) 
{
    return Point(x - p.x, y - p.y);
}
double Point::Length() const 
{
    return sqrt(x*x + y*y);
}

ORIENT Point::Or(Point& b, Point& e) const 
{
    Point p0 = *this; 
    Point a = e - b;
    Point c = p0 - b;
    double s = a.x * b.y - b.x * a.y;
    if (s < 0) return RIGHT;
    if (s > 0) return LEFT;
    if ((a.x * c.x < 0) || (a.y * c.y < 0)) return BEHIND;
    if (a.Length() > c.Length()) 
        return BETWEEN;
    return AHEAD;
}

bool Point::InTr(Triangle& T) const 
{
ORIENT or1 = Or(T.Get_v1(), T.Get_v2());
ORIENT or2 = Or(T.Get_v2(), T.Get_v3());
ORIENT or3 = Or(T.Get_v3(), T.Get_v1());
if ((or1 == RIGHT || or1 == BETWEEN)
 && (or2 == RIGHT || or2 == BETWEEN)
 && (or3 == RIGHT || or3 == BETWEEN)) 
return 1;
else return 0;
}

//Triangle.h
#ifndef TR_H
#define TR_H
#include "Point.h"

class Triangle
{
private:
    char* objID;
    char* name;
    Point v1,v2,v3;
    double a,b,c;
public:
    Triangle(Point, Point, Point, const char*);
    Triangle(const char*);
    Triangle(const Triangle&);
    Triangle &operator =(const Triangle&);
    ~Triangle();
    Point Get_v1() const { return v1; }
    Point Get_v2() const { return v2; }
    Point Get_v3() const { return v3; }
    char *GetName() const { return name; }
    void Show() const;
    void ShowSideAndArea() const;
    void Move(Point);
    bool operator >(const Triangle&) const;
    static int count;
    friend bool TrInTr(Triangle, Triangle); 
};
#endif;

//Triangle.cpp
#include <iostream>
#include <math.h>
#include <iomanip>
#include <cstring>
#include "Triangle.h"
using namespace std;

Triangle::Triangle(Point w1, Point w2, Point w3, const char*iden): v1(w1), v2(w2), v3(w3)
{
    char buf[20];
    objID = new char [strlen(iden)+1];
    strcpy(objID, iden);
    count++;
    sprintf(buf, "triangle %d", count);
    name=new char[strlen(buf)+1];
    strcpy(name, buf); 
    a=sqrt((w1.x-w2.x)*(w1.x-w2.x)+(w1.y-w2.y)*(w1.y-w2.y));
    b=sqrt((w2.x-w3.x)*(w2.x-w3.x)+(w2.y-w3.y)*(w2.y-w3.y));    
    c=sqrt((w1.x-w3.x)*(w1.x-w3.x)+(w1.y-w3.y)*(w1.y-w3.y));
    cout << "constructor 1 for: " << objID << "(" << name << ")" << endl;
}
Triangle::Triangle(const char*iden)
{   
    char buf[20];
    objID = new char [strlen(iden)+1];
    strcpy(objID, iden);
    count++;
    sprintf(buf, "triangle %d", count);
    name=new char[strlen(buf)+1];
    strcpy(name, buf); 
    a=b=c=0;
    cout << "constructor 2 for: " << objID << "(" << name << ")" << endl;
}
Triangle::~Triangle()
{
    cout << "Destructor for: " << objID << endl;
    delete []objID;
    delete []name;
}
void Triangle::Show() const
{ 
    v1.Show();
    cout<< endl;
    v2.Show();
    cout<< endl;
    v3.Show();
    cout<< endl;
}
void  Triangle::ShowSideAndArea() const
{
    double p =(a + b + c) / 2;
    double S = sqrt(p * (p - a) * (p - b) * (p - c));
    cout << name << ':';
    cout.precision (4);
    cout << setw(10) << a;
    cout << setw(10) << b;
    cout << setw(10) << c;
    cout << endl << "size" << S <<endl;
}

void Triangle::Move(Point p) 
{
    v1 += p; 
    v2 += p; 
    v3 += p;
}

bool Triangle::operator >(const Triangle& T) const 
{
    double p = (a + b + c) / 2;
    double s = sqrt(p * (p - a) * (p - b) * (p - c));
    double pT = (T.a + T.b + T.c) / 2;
    double sT = sqrt(pT * (pT - T.a) * (pT - T.b) * (pT - T.c));
    if (s > sT) 
        return true;
    return false;
}

Triangle::Triangle(const Triangle& T):
v1(T.v1), v2(T.v2), v3(T.v3), a(T.a), b(T.b), c(T.c) 
{
    cout << "Copy constructor for: " << T.objID << " ( " << T.name << " ) " << endl; 
    objID = new char[strlen(T.objID) + strlen("(.copy)") + 1];
    strcpy(objID, T.objID);
    strcat(objID, ".copy");
    name = new char[strlen(T.name) + 1];
    strcpy(name,  T.name);
}

Triangle& Triangle::operator =(const Triangle& T) 
{
    cout << "Operator =: " << objID << " = " << T.objID << endl;
    if (&T == this) 
        return *this;
    delete [] name;
    name = new char[strlen(T.name) + 1];
    strcpy(name, T.name);
    a = T.a; 
    b = T.b; 
    c = T.c;
    return *this;
}

bool TrInTr(Triangle T1, Triangle T2) 
{
    Point v1 = T1.Get_v1();
    Point v2 = T1.Get_v2();
    Point v3 = T1.Get_v3();
    return (v1.InTr(T2) && v2.InTr(T2) && v3.InTr(T2));
    return true;
}


#ifndef PENTAGON_H
#define PENTAGON_H

#include "Point.h"
#include "Triangle.h"

class Pentagon: public Triangle
{
private:
    char* objIDP;
    char* Pname;
    Point v1,v2,v3,v4,v5;
    double a,b,c,d,e,dop1,dop2;

public:
    Pentagon(Point, Point, Point, Point, Point, const char*);
    Pentagon(const char*);
    Pentagon(const Pentagon&);
//    ~Pentagon();
    Point Get_v1() { return v1; };
    Point Get_v2() { return v2; };
    Point Get_v3() { return v3; };
    Point Get_v4() { return v4; );
    Point Get_v5() { return v5; };
    char* GetName();
    void Show() const;
//    void ShowSideAndArea() const;
    void Move(Point);
    bool operator >(const Pentagon&) const;
    static int count;
    Pentagon &operator =(const Pentagon&);
};

#endif;




//Pentagon.cpp
#include <iostream>
#include <math.h>
#include <iomanip>
#include <cstring>
#include "Pentagon.h"
#include "Point.h"

using namespace std;

Pentagon::Pentagon(Point w1, Point w2, Point w3, Point w4, Point w5, const char* iden):
Triangle(w1, w2, w3, iden), v1(w1), v2(w2), v3(w3), v4(w4), v5(w5) 
{
    char buf[20];
    objIDP = new char [strlen(iden)+1];
    strcpy(objIDP, iden);
    count++;
    sprintf(buf, "pentagon %d", count);
    Pname=new char[strlen(buf)+1];
    strcpy(Pname, buf); 
    a = sqrt((w1.x-w2.x)*(w1.x-w2.x)+(w1.y-w2.y)*(w1.y-w2.y));
    b = sqrt((w3.x-w4.x)*(w3.x-w4.x)+(w3.y-w4.y)*(w3.y-w4.y));    
    c = sqrt((w1.x-w3.x)*(w1.x-w3.x)+(w1.y-w3.y)*(w1.y-w3.y));
    d = sqrt((w4.x-w5.x)*(w4.x-w5.x)+(w4.y-w5.y)*(w4.y-w5.y));
    e = sqrt((w4.x-w5.x)*(w4.x-w5.x)+(w4.y-w5.y)*(w4.y-w5.y));
    dop1 = sqrt((w2.x-w3.x)*(w2.x-w3.x)+(w2.y-w3.y)*(w2.y-w3.y));
    dop2 = sqrt((w2.x-w4.x)*(w2.x-w4.x)+(w2.y-w4.y)*(w2.y-w4.y));
    cout << "constructor 1 for: " << objIDP << "(" << Pname << ")" << endl;
}

Pentagon::Pentagon(const char* iden): Triangle(iden)
{   
    char buf[20];
    objIDP = new char [strlen(iden)+1];
    strcpy(objIDP, iden);
    count++;
    sprintf(buf, "pentagon %d", count);
    Pname = new char[strlen(buf)+1];
    strcpy(Pname, buf); 
    a = b = c = d = e = 0;
    cout << "constructor 2 for: " << objIDP << "(" << Pname << ")" << endl;
}

//Pentagon::~Pentagon()
//{
//    cout << "Destructor for: " << objIDP << endl;
//    delete []objIDP;
//    delete []Pname;
//}

void Pentagon::Show() const
{ 
    Triangle::Show();
    v4.Show();
    cout << endl;
    v5.Show();
    cout << endl;
}

void Pentagon::Move(Point p) 
{
    Triangle::Move(p);
    v4 += p;
    v5 += p;
}

bool Pentagon::operator >(const Pentagon& P) const 
{
    double p1 = (a + b + dop1) / 2;
    double s1 = sqrt(p1 * (p1 - a) * (p1 - b) * (p1 - dop1));
    double pPt1 = (P.a + P.b + P.dop1) / 2;
    double sPt1 = sqrt(pPt1 * (pPt1 - P.a) * (pPt1 - P.b) * (pPt1 - P.dop1));
    double p2 = (dop2 + c + dop1) / 2;
    double s2 = sqrt(p2 * (p2 - dop2) * (p2 - c) * (p2 - dop1));
    double pPt2 = (P.dop2 + P.c + P.dop1) / 2;
    double sPt2 = sqrt(pPt2 * (pPt2 - P.dop2) * (pPt2 - P.c) * (pPt2 - P.dop1));
    double p3 = (dop2 + d + e) / 2;
    double s3 = sqrt(p3 * (p3 - dop2) * (p3 - d) * (p3 - e));
    double pPt3 = (P.dop2 + P.d + P.e) / 2;
    double sPt3 = sqrt(pPt3 * (pPt3 - P.dop2) * (pPt3 - P.d) * (pPt3 - P.e));
    double sumP1, sumP2;
    sumP1 = s1 + s2 + s3;
    sumP2 = sPt1 + sPt2 + sPt3;
    
    if (sumP1 > sumP2) 
        return true;
    return false;
}

Pentagon Pentagon::operator = (const Pentagon& P) 
{
    cout << "Operator =: " << objIDP << " = " << P.objIDP << endl;
    if (&P == this) 
        return *this;
    delete [] Pname;
    Pname = new char[strlen(P.Pname) + 1];
    strcpy(Pname, P.Pname);
    a = P.a; 
    b = P.b; 
    c = P.c;
    d = P.d;
    e = P.e;
    dop1 = P.dop1;
    dop2 = P.dop2;
    return *this;
}


// Main.cpp
#include <iostream>
#include "Pentagon.h"
#include "Triangle.h"
using namespace std;

double GetDouble();
int Menu();
int GetNumber(int min, int max);
void ExitBack();
void FindMax(Pentagon*[], int n);
void Show(Pentagon*[], int n);
void Move(Pentagon*[], int n);
//void IsIncluded(Triangle*[], int n);
int Pentagon::count=0;
    
int main ()
{  
    Point p1(0,0);
    Point p2(0.5,1);
    Point p3(1,0);
    Point p4(0,4.5);
    Point p5(2,1);
    Point p6(2,0);
    Point p7(2,2);
    Point p8(3,0);
    Pentagon PentA(p1,p2,p3,p4,p5, "PentA");
    Pentagon PentB(p4,p5,p6,p7,p8, "PentB");
 /*   Triangle PentC(p1,p5,p6, "TriC");
    Triangle PentD(p1,p7,p8, "TriD");*/
    Triangle *pPent[] = {&PentA, &PentB};
    int n = sizeof (pPent) / sizeof (pPent[0]);
    bool done = false;
    while (!done)
    {
        switch (Menu())
        {
            case 1: FindMax(pPent, n); break;
            case 2: Show(pPent, n); break;
            case 3: Move(pPent, n); break;
            case 4: cout << "End" << endl;
            done=true; break;
        }
   }
   return 0;
}

double GetDouble() 
{
    double v;
    while (true) 
    {
        cin >> v;
        if (cin.peek() == '\n') 
            break;
        else
        {
            cin.clear();
            cout << "Wrong input" << endl;
            while (cin.get() != '\n') {};
        }
    }
    return v;
}

int Menu()
{ cout << "------------Menu------------";
  cout<<endl;
  cout<<"FindMax -1"
  <<"\t Move -3"<<endl;
  cout<<"Show -2"
  <<"\t End -4"<<endl;
  return GetNumber (1,4);
}

int GetNumber (int min, int max)
{ int n = min - 1;
  while (true)
  { 
      cin >> n;
      if ((n >= min) && (n <= max))
        break;
      else 
      {
          cout << "Try again!!!" << endl;
      cin.clear(); 
      }
  }
  return n;
}
 
void ExitBack()
{    
    cout << "Press Enter " << endl;
    cin.get(); // \0
    cin.get(); // \n
}
 
void Show(Pentagon *pPent[], int n)
{
    int i;
    cout << "----------Show----------" << endl;
    for (i = 0; i<n; i++)
    {
        pPent[i] -> Show();
 //       pTria[i] -> ShowSideAndArea();
    }
    ExitBack();
}
 
void Move(Pentagon *pPent[], int n)
{
    cout << "----------Move----------" << endl;
    cout << "Enter number of triangle: ";
    int i = GetNumber(1, n) - 1;
    pPent[i]->Show();
    Point p;
    cout << "X-move \n";
    p.x = GetDouble();
    cout << "Y-move \n";
    p.y = GetDouble();
    pPent[i]->Move(p);
    cout << "New position \n";
    pPent[i]->Show();
    ExitBack();
}
void FindMax(Pentagon *pPent[], int n)
{
    cout << "----------FindMax----------" << endl;
    Pentagon pMax("tMax");
    pMax = *pPent[0];
    for (int i = 0; i < n; i++)
        if (*pPent[i] > tMax)
            pMax = *pPent[i];
    cout << "Maximal pentagon: " << pMax.GetName() << endl;
    ExitBack();
}






заранее благодарю smile  smile  smile 
PM MAIL   Вверх
azesmcar
Дата 16.6.2009, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



Цитата(4aineG @  16.6.2009,  10:25 Найти цитируемый пост)
заранее благодарю smile  smile  smile  

не стоит, сомневаюсь что кто-то поможет с такой постановкой вопроса smile 
по вашему мы должны перечитать весь код? Посмотреть 465 строк чтобы найти у вас ошибку? Короче...
На какой строке ошибка выдается, какая ошибка выдается, какой компилятор?
PM   Вверх
zim22
Дата 16.6.2009, 10:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Цитата(4aineG @  16.6.2009,  10:25 Найти цитируемый пост)
В общем вылазит все время ошибка мол: метод уже определен

у вас ошибка в том, что метод уже определён!


--------------------
PM MAIL   Вверх
fry
Дата 16.6.2009, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 257
Регистрация: 4.10.2006

Репутация: 2
Всего: 3



Цитата

и еще вопрос можно ли реализовать класс Pentagon только с тремя точками и ребрами, ведь пятиугольник это посути три треугольника. 


Описать, в данном случае, пятиугольник тремя точками можно. Вариант 1 ты уже описал. Однако, думаю, что если имелся ввиду пятиугольник с равными ребрами (как он там правильно называется правильным или еще как ХЗ), то потребуется пять треугольников с одной общей точкой и общими точками между двумя рядом стоящими треугольниками, при этом все 5 треугольников одинаковые.

ЗЫ Твой код не смотрел (думаю не я один). Насчет реализации. Думаю правильнее сделать класс не производным, а включить в него как массив объектов все треугольники (или координаты точек в конечном итоге). Если надо именно наследовать, то в мною описанном варианте можно обойтись и тремя точками из класса треугольника, перегрузив методы отображения.

Это сообщение отредактировал(а) fry - 16.6.2009, 15:53
PM MAIL   Вверх
4aineG
Дата 16.6.2009, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 7.8.2008

Репутация: нет
Всего: нет



Error    1    error C2059: syntax error : 'namespace'    c:\documents and settings\триумф\мои документы\дима\ооаип\программы\polygon\polygon\main.cpp    5
Error    12    error C2059: syntax error : 'namespace'    c:\documents and settings\триумф\мои документы\дима\ооаип\программы\polygon\polygon\pentagon.cpp    9
Error    2    error C2238: unexpected token(s) preceding ';'    c:\documents and settings\триумф\мои документы\дима\ооаип\программы\polygon\polygon\main.cpp    5
Error    13    error C2238: unexpected token(s) preceding ';'    c:\documents and settings\триумф\мои документы\дима\ооаип\программы\polygon\polygon\pentagon.cpp    9
Error    4    error C2535: 'double Pentagon::GetDouble(void)' : member function already defined or declared    c:\documents and settings\триумф\мои документы\дима\ооаип\программы\polygon\polygon\main.cpp    49
Error    6    error C2535: 'int Pentagon::GetNumber(int,int)' : member function already defined or declared    c:\documents and settings\триумф\мои документы\дима\ооаип\программы\polygon\polygon\main.cpp    77
Error    5    error C2535: 'int Pentagon::Menu(void)' : member function already defined or declared    c:\documents and settings\триумф\мои документы\дима\ооаип\программы\polygon\polygon\main.cpp    67
Error    15    error C2535: 'Pentagon::Pentagon(const char *)' : member function already defined or declared    c:\documents and settings\триумф\мои документы\дима\ооаип\программы\polygon\polygon\pentagon.cpp    31
Error    14    error C2535: 'Pentagon::Pentagon(Point,Point,Point,Point,Point,const char *)' : member function already defined or declared    c:\documents and settings\триумф\мои документы\дима\ооаип\программы\polygon\polygon\pentagon.cpp    11
Error    7    error C2535: 'void Pentagon::ExitBack(void)' : member function already defined or declared    c:\documents and settings\триумф\мои документы\дима\ооаип\программы\polygon\polygon\main.cpp    93
Error    10    error C2535: 'void Pentagon::FindMax(Pentagon *[],int)' : member function already defined or declared    c:\documents and settings\триумф\мои документы\дима\ооаип\программы\polygon\polygon\main.cpp    128
Error    9    error C2535: 'void Pentagon::Move(Pentagon *[],int)' : member function already defined or declared    c:\documents and settings\триумф\мои документы\дима\ооаип\программы\polygon\polygon\main.cpp    112
Error    8    error C2535: 'void Pentagon::Show(Pentagon *[],int)' : member function already defined or declared    c:\documents and settings\триумф\мои документы\дима\ооаип\программы\polygon\polygon\main.cpp    100
Error    3    error C2864: 'Pentagon::count' : only static const integral data members can be initialized within a class    c:\documents and settings\триумф\мои документы\дима\ооаип\программы\polygon\polygon\main.cpp    15

вот ошибки , компилятор Вижал2005
PM MAIL   Вверх
fry
Дата 16.6.2009, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 257
Регистрация: 4.10.2006

Репутация: 2
Всего: 3



Обычно среда показывает строки, в которых ошибки. Приводи кусок кода со строками, на которые ругается компилятор. В том "сборнике" исходников запаришься разбираться.
Насчет определенных функций. Посмотри как подключаются хедеры. Может у тебя ч-то несколько раз подключается.

Цитата

Код

//point.cpp
#include <iostream>
#include <math.h>
#include "Point.h"
#include "Triangle.h"



Тебе не кажется странным наличие
Цитата

Код

#include "Triangle.h"


в коде определений методов для точки? smile 


Это сообщение отредактировал(а) fry - 16.6.2009, 17:36
PM MAIL   Вверх
mes
Дата 16.6.2009, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(fry @  16.6.2009,  16:28 Найти цитируемый пост)
Обычно среда показывает строки, в которых ошибки.

номер строки в приведенных ошибках показан справа. smile


--------------------
PM MAIL WWW   Вверх
fry
Дата 16.6.2009, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 257
Регистрация: 4.10.2006

Репутация: 2
Всего: 3



mes, не спорю. Но если не трудно выдели эти строки из листинга выше, а то мне есть еще чем заняться.
PM MAIL   Вверх
4aineG
Дата 17.6.2009, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 7.8.2008

Репутация: нет
Всего: нет



в общем везде ругается на 
Код

using namespace std;

Код

double GetDouble() , int GetNumber (int min, int max), int Menu(), int GetNumber (int min, int max)
, Pentagon::Pentagon(const char* iden): Triangle(iden), Pentagon::Pentagon(Point w1, Point w2, Point w3, Point w4, Point w5, const char* iden):
Triangle(w1, w2, w3, iden), v1(w1), v2(w2), v3(w3), v4(w4), v5(w5) 
 и т.д. пишет что уже объявлены, в общем ругается на все методы в Pentagon.cpp и main объясните пожалуйста в чем причина а то я никак не догоню!!! smile  smile  smile 

 а еще какуюто хрень несет про скобки я уже все перепроверил 1000 раз


Это сообщение отредактировал(а) 4aineG - 17.6.2009, 16:15
PM MAIL   Вверх
mes
Дата 17.6.2009, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



откомпилируйте этoт примерчик
Код

#include <iostream>
using namespace std;
int main () { cout << endl; }

если выдаст ошибку (а мне что-то подсказывает, что выдаст), то проблема с компилятором.   smile 
в противном случае у Вас скорей всего не хватает закрывающей парной скобки в одном из инклудов.


Это сообщение отредактировал(а) mes - 17.6.2009, 16:31


--------------------
PM MAIL WWW   Вверх
baldina
Дата 17.6.2009, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 15
Всего: 101



в Pentagon.h:     Point Get_v4() { return v4; );


ну и заодно
Код

FindMax(pPent, n);

и т.п. не сработает, т.к. pPent это Triangle *

Это сообщение отредактировал(а) baldina - 17.6.2009, 18:07
PM MAIL   Вверх
4aineG
Дата 17.6.2009, 20:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 7.8.2008

Репутация: нет
Всего: нет



исправил несколько ошибок, вылезло 
Error    9    error LNK2001: unresolved external symbol "public: static int Triangle::count" (?count@Triangle@@2HA)    Triangle.obj
Error    8    error LNK2019: unresolved external symbol "public: char * __thiscall Pentagon::GetName(void)" (?GetName@Pentagon@@QAEPADXZ) referenced in function "void __cdecl FindMax(class Pentagon * * const,int)" (?FindMax@@YAXQAPAVPentagon@@H@Z)    Main.obj
Error    10    fatal error LNK1120: 2 unresolved externals    C:\Documents and Settings\Триумф\Мои документы\Дима\ООАиП\программы\Polygon\Debug\Polygon.exe    1

PM MAIL   Вверх
mes
Дата 17.6.2009, 20:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



добавьте в cpp определение указанных переменной и функции.
 


--------------------
PM MAIL WWW   Вверх
baldina
Дата 18.6.2009, 11:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 15
Всего: 101



Цитата

Pentagon::GetName(void)

нет необходимости определять, есть метод в родительском классе. просто выкини объявление этой функции из класса Pentagon
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0692 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.