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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Пробемма с перегрузкой 
:(
    Опции темы
EvilJC
Дата 11.10.2007, 08:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Код

#include <iostream>
using namespace std;

class MetersToMiles
{
private:
    int Meters;

public:
    MetersToMiles(): Meters(0)
    {}
    MetersToMiles(int Mt): Meters(Mt)
    {}

    void get_distance()
    {
        cout<< "Enter meters: ";
        cin>> Meters;
    }

    void show_distance()
    {
        cout<< "Meters: "<< Meters<< endl;
    }

    operator MilesToMeters()   // тут возникает ошибка.
    {
        float miles= Meters / 1600.0;
        return MilesToMeters(miles);
    }
};

class MilesToMeters
{
private:
    float Miles;

public:
    MilesToMeters(): Miles(0)
    {}
    MilesToMeters(float Ml): Miles(Ml)
    {}

    void get_distance()
    {
        cout<< "Enter miles: ";
        cin>> Miles;
    }

    void show_distance()
    {
        cout<< "Miles: "<< Miles;
    }
};



Когда в main() пытаюсь
использовать
MetersToMiles m1(2400);
MilesToMeters mil= m1;

То он выдает ошибку.
C:\Projects\testOperator\Operator\Distance.h:26: error: expected type-specifier before 'MilesToMeters'
C:\Projects\testOperator\Operator\main.cpp:8: error: conversion from 'MetersToMiles' to non-scalar type 'MilesToMeters' requested
:: === Build finished: 2 errors, 0 warnings ===

В чем проблема? подскажите плиз.
PM MAIL   Вверх
zkv
Дата 11.10.2007, 08:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


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

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



EvilJC, либо помести определение класса MilesToMeters вперед, либо возвращай указатель на этот класс, предварительно сообщив о нем так:
class MilesToMeters;
дело в том, чтобы использовать класс (так, чтобы компилятор должен был иметь информацию о размере объекта класса, как в твоем примере), ты должен предварительно определить его.

Это сообщение отредактировал(а) zkv - 11.10.2007, 08:33
PM MAIL   Вверх
Lazin
Дата 11.10.2007, 08:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

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



Откуда компилятор должен узнать о существовании MilesToMeters
Код

#include <iostream>
using namespace std;//!!!не делай так в заголовочном файле!!!

class MilesToMeters
{
private:
    float Miles;
public:
    MilesToMeters(): Miles(0)
    {}
    MilesToMeters(float Ml): Miles(Ml)
    {}
    void get_distance()
    {
        cout<< "Enter miles: ";
        cin>> Miles;
    }
    void show_distance()
    {
        cout<< "Miles: "<< Miles;
    }
};

class MetersToMiles
{
private:
    int Meters;
public:
    MetersToMiles(): Meters(0)
    {}
    MetersToMiles(int Mt): Meters(Mt)
    {}
    void get_distance()
    {
        cout<< "Enter meters: ";
        cin>> Meters;
    }
    void show_distance()
    {
        cout<< "Meters: "<< Meters<< endl;
    }
    operator MilesToMeters()   // тут возникает ошибка.
    {
        float miles= Meters / 1600.0;
        return MilesToMeters(miles);
    }
};

PM MAIL Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

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

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


 




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


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

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