2015-11-14 3 views
0

Для этого применяются операции на точки M(x,y), я определил класс POINT2D.h:Доступ класса STRUCT

#ifndef POINT2D_H_INCLUDED 

#define POINT2D_H_INCLUDED 

class POINT2D { 
    POINT2D();     //first constructor 
    POINT2D(double x,double y); // second constructor 

private: 
    Point M, PointImage; 

public: 
    void DeclarerM(){ 
     std::cout << "Entrer les composantes du point M : " << " "; 
     std::cin >> M.x >> M.y; 
    } 

    Point Trnaslation(Point M);   //Functions applied on Point 
    Point Rotation(Point M); 
    Point SymetrieAxiale (Point M); 
    Point Homothetie(Point M); 
}; 

#endif // POINT2D_H_INCLUDED 

и Point-структуру в основной:

struct Point{    //structure Point 
    double x;     //the coordinates of the Point 
    double y; 
}; 

Когда я Запустите его. Я получаю сообщение об ошибке в классе, говоря: «Точка не называет тип». В чем проблема?

+1

Обычно заголовок включен в начале основного .cpp. Таким образом, ваш класс POINT2D не знает «struct point», хотя он сильно использует его. См. Форвардную декларацию. – 101010

ответ

0

В C++ перед тем, как вы можете использовать тип, он должен быть объявлен или определен. Так как POINT2D не знает о структуре Point, которую вы указали в своем main.cpp, вы не можете ее использовать. Вы можете forward declarePoint или переместить Point в свой собственный файл заголовка, а затем включить его в POINT2D.h и main.

У вас также есть проблема с POINT2D, так как ваши конструкторы являются частными. Вы должны добавить public: перед ними или переместить их в раздел public, который уже находится в вашем классе.

+0

Это работает, спасибо много. –

Смежные вопросы