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


Автор: GreyKarapetyan 31.5.2009, 23:29
Есть:
заголовочные файлы
Код

Point.h
Rectangle.h


файлы .cpp
Код

Point.cpp
Rectangle.cpp
main.cpp


В Point.cpp
я пишу
Код

include "Point.h"


в Rectangle.cpp 
я пишу 
Код

include "Rectangle.h"


в main.cpp я должен использовать классы объявленные/определенные и в Point.h/.cpp и в Rectangle.h/.cpp

1)что именно я должен проикнлудить в main.cpp только header'ы или только cpp?
2)в некоторых примерах из книги в Rectangle.cpp делается #include <iostream>, но я не понимаю зачем? если работа с консолью выполняется только из main.cpp ?


спасибо




Автор: andrew_121 31.5.2009, 23:34
Только хедеры.

Цитата(GreyKarapetyan @  31.5.2009,  23:29 Найти цитируемый пост)
в некоторых примерах из книги в Rectangle.cpp делается #include <iostream>, но я не понимаю зачем? если работа с консолью выполняется только из main.cpp ?

Покажи весь код.

Автор: Dmi3ev 31.5.2009, 23:52
Цитата

1)что именно я должен проикнлудить в main.cpp только header'ы или только cpp?

ясен пень только *.h файлы надо подключать в данном случае, для этого все и делается...
Цитата

2)в некоторых примерах из книги в Rectangle.cpp делается #include <iostream>, но я не понимаю зачем? если работа с консолью выполняется только из main.cpp ?

Ты правда думаешь, что мы сейчас читаем ту же книгу на той же странице??? и ваще вопрос какой-то мутный...

Автор: GreyKarapetyan 1.6.2009, 00:06
Dmi3ev, andrew_121,
Книга в формате djvu копипастить не могу.
А как быть в случае если в классе определяемом/описываемом в Rectangle.h/Rectangle.cpp присутствуют как данные-класса объекты определенные/описанные в Point.h/Point.cpp?

Автор: Dmi3ev 1.6.2009, 00:09
что значит как быть?

Автор: azesmcar 1.6.2009, 00:13
GreyKarapetyan
если в файле rectangle.cpp сделан инклуд iostream это значит одно из трех
1. в нем используется что нибудь из этого хидера
2. это ошибка по невнимательности автора
3. книгу надо выкидывать (это в случае того, если автор в самом деле не понимает что этот инклуд там не нужен, в чем я сильно сомневаюсь)

Добавлено через 25 секунд
Цитата(GreyKarapetyan @  1.6.2009,  00:06 Найти цитируемый пост)
Книга в формате djvu копипастить не могу.

переписать

Автор: Dmi3ev 1.6.2009, 00:14
Цитата

Книга в формате djvu копипастить не могу.

а пробуешь что-то делать ты тоже в формате djvu??? А если ты не пробуешь, то тогда нах спрашивать, читай дальше, как худ. литературу...

Автор: GreyKarapetyan 1.6.2009, 01:05
azesmcar, 
Цитата(azesmcar @  1.6.2009,  00:13 Найти цитируемый пост)

переписать


//файл Rect.hpp
Код

#include <iostream.h>

class Point
{
public:
  void SetX(int x) {itsX =x;}
  void SetY(int y) {itsY =y;}
  int GetX() const {return itsX;}
  int GetY() const {return itsY;}

private:
  int itsX;
  int itsY;
};


class Rectangle
{
public:
  Rectangle (int top, int left, int bottom, int right);
  ~Rectangle() {}

  int GetTop() const {return itsTop;}
  int GetLeft() const {return itsLeft;}
  int GetBottom() const {return itsBottom;}
  int GetRight() const {return itsRight;}

  Point GetUpperLeft() const {return itsUpperLeft;} 
  Point GetLowerLeft() const {return itsLowerLeft;}
  Point GetUpperRight() const {return itsUpperRight;}
  Point GetLowerRight() const {return itsLowerRight;}

  void SetUpperLeft(Point Location) {itsUpperLeft = Location;}
  void SetLowerLeft(Point Location) {itsLowerLeft = Location;}
  void SetUpperRight(Point Location) {itsUpperRight = Location;}
  void SetLowerRight(Point Location) {itsLowerRight = Location;}

  void SetTop(int top) {itsTop = top;}
  void SetLeft(int left) {itsLeft = left;}
  void SetBottom(int bottom) {itsBottom = bottom;}
  void SetRight(int right) {itsRight = right;}

  int GetArea() const;

private:
  Point itsUpperLeft;
  Point itsUpperRight;
  Point itsLowerLeft;
  Point itsLowerRight;
  int itsTop;
  int itsLeft;
  int itsBottom;
  int itsRight;
};

  

Файл rect.cpp

Код

#include "rect.hpp"
Rectangle::Rectangle(int top, int left, int bottom, int right)
{
  itsTop = top;
  itsLeft = left;
  itsBottom = bottom;
  itsRight = right;

  itsUpperLeft.SetX(left);
  itsUpperLeft.SetY(top);
  
  itsUpperRight.SetX(right);
  itsUpperRight.SetY(top);

  itsLowerLeft.SetX(left);
  itsLowerLeft.SetY(bottom);

  itsLowerRight.SetX(right);
  itsLowerRight.SetY(bottom);
}


int Rectangle::GetArea() const
{
  int Width = itsRight - itsLeft;
  int Height = itsTop - itsBottom;
  return (Width * Height);
}


int main() {
Rectangle MyRectangle (100, 20, 50, 80);

int Area = MyRectangle.GetArea();

cout << "Area: " << Area << "\n";
cout "Upper Left X Coordinate:";
cout << MyRectangle.GetUpperLeft().GetX();
return 0;
}


- почему main не вынесен отдельным .cpp файлом, а объявления и определения  2 классов Rectangle и Point хранятся в одном файле ?
- я не понял почему iostream подключается в файле Rect.hpp хотя используется только в main.cpp? 
- у меня объявления и определения классов Point и Rectangle разнесены по разным файлам (Point.h/Point.cpp и Rectangle.h/Rectangle.cpp). т.к. Rectangle использует объекты Point - должен ли я в (Rectangle.cpp или Rectangle.h) делать include "Point.h"?

Автор: Dmi3ev 1.6.2009, 01:33
Цитата

- я не понял почему iostream подключается в файле Rect.hpp хотя используется только в main.cpp? 

чтобы в мэйн подключать только один файл, хотя глупо, имхо...
Цитата

почему main не вынесен отдельным .cpp файлом, а объявления и определения  2 классов Rectangle и Point хранятся в одном файле ?

хз, там определения методов вместе с прогой, которая демонстрирует намешаны...
наверное, автор хотел что-то донести таким образом, хотя хз, так не делают обычно, тут нет полиморфизма, зачем известное заранее описывать в проге, хз...
Цитата

у меня объявления и определения классов Point и Rectangle разнесены по разным файлам (Point.h/Point.cpp и Rectangle.h/Rectangle.cpp). т.к. Rectangle использует объекты Point - должен ли я в (Rectangle.cpp или Rectangle.h) делать include "Point.h"?

ваще да, но тут класс Поинт расписан и так, так что необязательно...
тут наворочено, так что лучше всего
Цитата

3. книгу надо выкидывать 

...

Автор: GreyKarapetyan 1.6.2009, 01:50
Dmi3ev, Критика - это, конечно, хорошо..., но что предложите взамен?
просто это уже вторая книга - (Либерти С++ за 21 день)
до этого был Липпман основы программирования на С++
бросать как бы не очень хочется

Автор: zim22 1.6.2009, 07:50
Цитата(GreyKarapetyan @  1.6.2009,  01:50 Найти цитируемый пост)
до этого был Липпман основы программирования на С++

тогда читайте Язык программирования С++. Вводный курс. Липпман. 4 издание.

Автор: Dmi3ev 1.6.2009, 13:21
Цитата

Dmi3ev, Критика - это, конечно, хорошо..., но что предложите взамен?

да это не критика, просто как тебе сказать... То что написано у тебя можно сравнить с:

человек заходит в общественный туалет, сел делать дела в первой кабинке, потом перешел во вторую, потом в третью... вышел из последней, отлил в писуар и доделал свои дела когда мыл руки...

Вопрос: Зачем так делать?
Ответ: Показал все возможности общественного туалета

Автор: jhonyxakep 2.6.2009, 08:12
Цитата
Книга в формате djvu копипастить не могу.
 ПОэт! smile 

Вообще во многих книгах для новичков iostream используется, но не требуется! это типа приучают писать все стандартные хидеры! smile 

Автор: zim22 2.6.2009, 08:24
Цитата(GreyKarapetyan @  1.6.2009,  00:06 Найти цитируемый пост)
Книга в формате djvu копипастить не могу.

на клавиатуре есть кнопочка Print Screen

Автор: jhonyxakep 2.6.2009, 14:50
И что эта кнопочка ему даст?

Автор: Rawen 2.6.2009, 20:09
ну нажмет ее и вставит в Paint, потом сохранит как картинку и покажет

Автор: jhonyxakep 3.6.2009, 04:02
А... А я чё-то туплю... Да он куда-то с форума потерялся...

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