Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Ошибка при вызове метода.


Автор: try_to_get 19.3.2007, 23:20
Не могу понять в чем ошибка.



Это файл с классом МНОГОУГОЛЬНИК

Код


//polygonclass.h

class polygon{
   unsigned int tops;
   int *xt;
   int *yt;
   int color;
public:
   void ixy();
   void oxy();
   void editsize();
   void lenline();
   void move();
   void editcolor();
   void ocolor();
   void draw();
   polygon(){
     tops = 4;
     xt = new int[tops];
     yt = new int[tops];
     for(int i=0; i<tops; ++i){
       xt[i] = 0;
       yt[i] = 0;
     }
     color = 5;
   }
   ~polygon(){
     delete []xt;
     delete []yt;
   }
};




Методы и прочии реализации.



Код


//functions.h

#include "polygonclass.h"
#include <graphics.h>
#include <iostream.h>
#include <string.h>
#include <conio.h>
void prus(unsigned char *line){
  int len = strlen(line);
  unsigned int i;
  char c = ' ';
  for(int k = 0; k < len; ++k){
    i = *(line+k);
    if((i>=192)&&(i<=239)){
      i-=64;
    }
    if((i>=240)&&(i<=255)){
      i-=16;
    }
    c=i;
    cout << c;
  }
}
void outmenu(){
  clrscr();
  prus("Программа, демонстрирующая методы класса МНОГОУГОЛЬНИК");
  cout << '\n';
  cout << '\n';
  prus("            * М Е Н Ю *");
  cout << '\n';
  cout << '\n';
  prus("  1>Ввести координаты.");
  cout << '\n';
  prus("  2>Вывести координаты.");
  cout << '\n';
  prus("  3>Изменить размер.");
  cout << '\n';
  prus("  4>Вычислить длины сторон.");
  cout << '\n';
  prus("  5>Переместить многоугольник.");
  cout << '\n';
  prus("  6>Изменить цвет многоугольника.");
  cout << '\n';
  prus("  7>Получить цвет многоугольника.");
  cout << '\n';
  prus("  8>Нарисовать многоугольник.");
  cout << '\n';
  prus("  9>Выход из программы.");
  cout << '\n';
  cout << '\n';
  prus("Введите номер действия ");
}
void polygon::ixy(){
  clrscr();
  prus("Введите координаты вершин.");
  for(int i=0; i<tops; ++i){
    cout << '\n';
    cout << "X(" << i << ") ";
    cin >> xt[i];
    cout << "Y(" << i << ") ";
    cin >> yt[i];
  }
}
void polygon::oxy(){
  clrscr();
  prus("Вывод координат аершин многоугольника.");
  for(int i=0; i<tops; ++i){
    cout << '\n';
    cout << "X(" << i << ")=" << xt[i];
    cout << ", Y(" << i << ")=" << yt[i];
  }
}
void polygon::editsize(){
  ;
}
void polygon::lenline(){
  ;
}
void polygon::move(){
  clrscr();
  prus("Введите значение, на которое будет сдвигаться многоугольник.");
  cout << "\n\n";
  prus("По X ");

  cout << '\n';
  prus("По Y ");
}
void polygon::editcolor(){
  clrscr();

}
void polygon::ocolor(){
  ;
}
void polygon::draw(){
  int dg=DETECT, dm;
  initgraph(&dg, &dm, "C:\\bc5\\bgi");
  for(int x=0,y; x<tops;++x){
    y=x;
    if(tops-x==1){y=-1;}
    line(xt[x],yt[x],xt[y+1],yt[y+1]);
  }
  getch();
  closegraph();
}




Главный файл.



Код


//main.cpp

#include "functions.h"
void main(){
   polygon P();
   int nmenu;
   do{
     outmenu();
     cin >> nmenu;
     switch(nmenu){
      case 1:{
        P.ixy(); /*ОШИБКА*/
        break;}
      case 2:{
        //P.oxy();
        break;}
      case 3:{
        //P.editsize();
        break;}
      case 4:{
        //P.lenline();
        break;}
      case 5:{
        //P.move();
        break;}
      case 6:{
        //P.editcolor();
        break;}
      case 7:{
        //P.ocolor();
        break;}
      case 8:{
        //P.draw();
        break;}
      case 9:{
        break;}
     }
   }while(nmenu!=9);
}




Выводит ошибку main.cpp(10,15)Structure required on left side of . or .*

Даже пробовал пустой метод вызывать все равно!

Если кто знает в чем ошибка, подскажите как исправить.

Автор: Daevaorn 19.3.2007, 23:27
Цитата(try_to_get @  20.3.2007,  00:20 Найти цитируемый пост)
Если кто знает в чем ошибка, подскажите как исправить.

у тебя не объявлена переменная с именем Р, методы которой ты пытаешься вызывать.

Автор: Бонифаций 20.3.2007, 00:36
У тебя должно быть

polygon P;

А у тебя 

polygon P();

В результате вместо создания обьекта P ты описал функцию P() возвращающую polygon; 

Автор: try_to_get 20.3.2007, 07:46
Огромное СПАСИБО! 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)