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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Почему ошибки, вроде делаю все правильно 
:(
    Опции темы
yngwie19
Дата 3.11.2008, 00:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Код

#ifndef Circle_H
#define Circle_H
#include <iomanip.h>
#include "Point.h"

using namespace std;

class Circle : public Point
{
    friend ostream& operator<<(ostream&, Circle&);
    public:
        Circle(float = 0.0, float x = 0, float y = 0);
        void SetRadius(float);
        float GetRadius();
        float area();
    protected:
        float radius;
    
};

#endif

#ifndef Point_H
#define Point_H
#include <iostream>
#include <iomanip.h>

using namespace std;

class Point
{
    friend ostream& operator<<(ostream&,Point&);
    public:
        Point(float = 0, float = 0);
        void SetPoint(float,float);
        float GetX() {return x;}
        float GetY() {return y;}
    protected:
        float x,y;
};

#endif

#include <iostream>
#include <iomanip.h>
#include "Point.h"
#include "Circle.h"

using namespace std;

//Class Point

Point::Point(float a, float b) {SetPoint(a,b);}

void Point::SetPoint(float a, float b)
{
    x = a;
    y = b;
}

ostream& operator<<(ostream& out, Point& p)
{
    out<<'['<<p.x<<", "<<p.y<<']';
    return out;
}

//Class Circle

Circle::Circle(float r, float a, float b)
: Point(a,b)
{SetRadius(r);}

void Circle::SetRadius(float r) {radius = r;}

ostream& operator<<(ostream& out, Circle& c)
{

    out<<"Center = ["<<c.x<<", "<<c.y<<"[ Radius = "<<setiosflags(ios::showpoint)<<setprecision(2)<<c.radius;
    
    return out;
}

#include <iostream>
#include "Point.h"
#include "Circle.h"

using namespace std;

int main(void)
{

    Point p(3.5, 5.3);
    Circle c(2.7, 1.2, 8.9);

    cout<<"Piont p: "<<p<<endl;
    cout<<"Circle r: "<<c<<endl;


    return 0;
}

Ошибки следующе:
--------------------Configuration: 1 - Win32 Debug--------------------
Compiling...
func.cpp
c:\program files\microsoft visual studio\myprojects\1\point.h(10) : error C2872: 'ostream' : ambiguous symbol
c:\program files\microsoft visual studio\myprojects\1\point.h(10) : error C2872: 'ostream' : ambiguous symbol
c:\program files\microsoft visual studio\myprojects\1\circle.h(10) : error C2872: 'ostream' : ambiguous symbol
c:\program files\microsoft visual studio\myprojects\1\circle.h(10) : error C2872: 'ostream' : ambiguous symbol
c:\program files\microsoft visual studio\myprojects\1\func.cpp(18) : error C2872: 'ostream' : ambiguous symbol
c:\program files\microsoft visual studio\myprojects\1\func.cpp(18) : error C2872: 'ostream' : ambiguous symbol
c:\program files\microsoft visual studio\myprojects\1\func.cpp(32) : error C2872: 'ostream' : ambiguous symbol
c:\program files\microsoft visual studio\myprojects\1\func.cpp(32) : error C2872: 'ostream' : ambiguous symbol
main.cpp
c:\program files\microsoft visual studio\myprojects\1\point.h(10) : error C2872: 'ostream' : ambiguous symbol
c:\program files\microsoft visual studio\myprojects\1\point.h(10) : error C2872: 'ostream' : ambiguous symbol
c:\program files\microsoft visual studio\myprojects\1\circle.h(10) : error C2872: 'ostream' : ambiguous symbol
c:\program files\microsoft visual studio\myprojects\1\circle.h(10) : error C2872: 'ostream' : ambiguous symbol
c:\program files\microsoft visual studio\myprojects\1\main.cpp(9) : warning C4305: 'argument' : truncation from 'const double' to 'float'
c:\program files\microsoft visual studio\myprojects\1\main.cpp(10) : warning C4305: 'argument' : truncation from 'const double' to 'float'
c:\program files\microsoft visual studio\myprojects\1\main.cpp(10) : warning C4305: 'argument' : truncation from 'const double' to 'float'
c:\program files\microsoft visual studio\myprojects\1\main.cpp(10) : warning C4305: 'argument' : truncation from 'const double' to 'float'
c:\program files\microsoft visual studio\myprojects\1\main.cpp(12) : error C2872: 'cout' : ambiguous symbol
c:\program files\microsoft visual studio\myprojects\1\main.cpp(13) : error C2872: 'cout' : ambiguous symbol
Error executing cl.exe.
PM MAIL   Вверх
J0ker
Дата 3.11.2008, 01:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



#include <iomanip>


--------------------
user posted image
PM MAIL   Вверх
yngwie19
Дата 3.11.2008, 01:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



J0ker, там же вроде про 'ostream' че-то

Это сообщение отредактировал(а) yngwie19 - 3.11.2008, 02:04
PM MAIL   Вверх
J0ker
Дата 3.11.2008, 02:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



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


--------------------
user posted image
PM MAIL   Вверх
IKM2007
Дата 3.11.2008, 08:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зима близко
**


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

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



yngwie19, если в Point.h уже подключил библиотеки
Код

#include <iostream>
#include <iomanip>

то уже в других файлах подключать не нужно, так-как подключаешь Point.h.
И еще твой компилятор ругается на преобразование типов double->float. Замени float на double.


--------------------
"К чёрту обстоятельства, я создаю возможности."
Брюс Ли
PM MAIL Skype   Вверх
yngwie19
Дата 3.11.2008, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Спасибо, все дело было в <iomanip.h>, (нужно без h).
Скажите а почему компилятор ругается на:

c:\program files\microsoft visual studio\myprojects\1\main.cpp(9) : warning C4305: 'argument' : truncation from 'const double' to 'float'
c:\program files\microsoft visual studio\myprojects\1\main.cpp(10) : warning C4305: 'argument' : truncation from 'const double' to 'float'
c:\program files\microsoft visual studio\myprojects\1\main.cpp(10) : warning C4305: 'argument' : truncation from 'const double' to 'float'
c:\program files\microsoft visual studio\myprojects\1\main.cpp(10) : warning C4305: 'argument' : truncation from 'const double' to 'float'


Здесь же все правильно должно быть
PM MAIL   Вверх
Ln78
Дата 3.11.2008, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



yngwie19, потому что числа без суффиксов по умолчанию воспринимаются как double.
Можно либо написать
Circle c(2.7f, 1.2f, 8.9f);
Либо поменять тип в своих классах с float на double, как уже было сказано.

Это сообщение отредактировал(а) Ln78 - 3.11.2008, 10:51
PM MAIL   Вверх
yngwie19
Дата 3.11.2008, 10:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Ln78, а если пользователюбудет предложено амому ввести значения через cin, как быть тогда
PM MAIL   Вверх
IKM2007
Дата 3.11.2008, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зима близко
**


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

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



Цитата(yngwie19 @  3.11.2008,  10:59 Найти цитируемый пост)
Ln78, а если пользователюбудет предложено амому ввести значения через cin, как быть тогда

Код

int main(void)
{
float a,b;
cin>>a>>b;
    Point p(a, b);
    
    cout<<"Piont p: "<<p<<endl;
    
    return 0;

}



--------------------
"К чёрту обстоятельства, я создаю возможности."
Брюс Ли
PM MAIL Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

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

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

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

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


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

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


 




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


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

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