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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите найти ошибку 
V
    Опции темы
kLASTER
Дата 8.8.2014, 06:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Доброго времени суток.
Переписываю пример с учебника, он выдает ошибку.
1. Хидер.
Код

#ifndef TABTEN1_H_
#define TABTEN1_H_
#include <string>
using std::string;

//ïðîñòîé áàçîâûé êëàññ
class TableTennisPlayer
{
  private:
    string firstname;
    string lastname;
    bool hasTable;
  public:
    TableTennisPlayer(const string & fn = "none",
    const string & ln = "none", bool ht = false);
    void Name()const;
    bool HasTable()const {return hasTable;};
    void ResetTable(bool v) {hasTable = v;};
};

//Ïðîñòîé ïðîèçâîäíûé êëàññ
class RatedPlayer : public TableTennisPlayer
{
  private:
    unsigned int rating;
  public:
    RatedPlayer(unsigned int r = 0, const string & fn = "none",
    const string & ln = "none", bool ht = false);
    RatedPlayer(unsigned int r = 0, const TableTennisPlayer & tp);
    unsigned int Rating()const {return rating;};
    void ResetRating(unsigned int r){rating = r;};
};

#endif



2. Определение(здесь то он и жалуется на последний конструктор RatedPlayer)
Код

#include "tabten1.h"
#include <iostream>

TableTennisPlayer::TableTennisPlayer(const string & fn,
const string & ln, bool ht):firstname(fn),
lastname(ln), hasTable(ht){};

void TableTennisPlayer::Name()const
{
  std::cout << lastname << ", " << firstname;
}

//Ìåòîäû RatedPlayer
RatedPlayer::RatedPlayer(unsigned int r,
const string & fn, const string & ln, bool ht):
      TableTennisPlayer(fn, ln, ht)
{
  rating = r;
}

RatedPlayer::RatedPlayer(unsigned int r, const TableTennisPlayer & tp):TableTennisPlayer(tp)
{
  rating = r;
}



3. Программа
Код

#include <iostream>
#include "tabten1.h"

int main(void)
{
  using std::cout;
  using std::endl;
  TableTennisPlayer player1("Tara", "Boomdea", false);
  RatedPlayer rplayer1(1140, "Mallory", "Duck", true);
  
  rplayer.Name();//Îáúåêò ïðîèçâîäíîã êëàññà èñïîëüçóåò ìåòîä áàçîâîãî êëàññà
  if(rpalyer1.HasTable())
    cout << ": has a table.\n";
  else
    cout << "hasn`t a table.\n";
  
  player1.Name();//Îáúåêò áàçîâîãî êëàññà èñïîëüçóåò ìåòîä áàçîâîãî êëàññà
  if(player1.HasTable())
    cout << ": has a table.\n";
  else
    cout << ": hasn`t a table.\n";
  
  cout << "Name: ";
  rpalyer1.Name();
  cout << "; Rating: " << rpalyer1.Rating() << endl;
  
  //Èíèöèàëèçàöèÿ îáúåêòà RatedPlayer ñ ïîìîùüþ îáúåêòà TableTennisPlayer
  RatedPlayer rplayer2(1212, player1);
  cout << "Name: ";
  rplayer2.Name();
  cout << "; Rating: " << rplayer2.Rating() << endl;
  
  system("pause");
  return 0;
}



Еще раз повторюсь, ругается на файл с определениями, а именно на RatedPlayer::RatedPlayer(unsigned int r, const TableTennisPlayer & tp):TableTennisPlayer(tp)
Ошибка:
In constructor `RatedPlayer::RatedPlayer(unsigned int, const TableTennisPlayer&)': default argument missing for parameter 2 of `RatedPlayer::RatedPlayer(unsigned int, const TableTennisPlayer&)' 

Это сообщение отредактировал(а) kLASTER - 8.8.2014, 06:09
PM MAIL   Вверх
Guinness
Дата 8.8.2014, 07:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Код

RatedPlayer(unsigned int r = 0, const TableTennisPlayer & tp);

Если для первого аргумента задано значение по умолчанию, то и для второго оно также должно быть задано.
PM MAIL   Вверх
kLASTER
Дата 8.8.2014, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Я так понимаю не запрещается одни аргументы делать по умолчанию другие нет. И почему он тогда ругается на файл с определениями, а не на хидер?
PM MAIL   Вверх
Guinness
Дата 9.8.2014, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(kLASTER @  8.8.2014,  16:50 Найти цитируемый пост)
Я так понимаю не запрещается одни аргументы делать по умолчанию другие нет

Если появляется агрумент со значением по умолчанию, то все последующие за ним также обязаны иметь значение по умолчанию. Можно было записать так:
Код

RatedPlayer(const TableTennisPlayer & tp, unsigned int r = 0);

Цитата(kLASTER @  8.8.2014,  16:50 Найти цитируемый пост)
 И почему он тогда ругается на файл с определениями, а не на хидер? 

Всё компилятор правильно говорит, прочитайте:
Цитата(kLASTER @  8.8.2014,  07:07 Найти цитируемый пост)
In constructor `RatedPlayer::RatedPlayer(unsigned int, const TableTennisPlayer&)': default argument missing for parameter 2 of `RatedPlayer::RatedPlayer(unsigned int, const TableTennisPlayer&)' 


PM MAIL   Вверх
kLASTER
Дата 9.8.2014, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо, действительно так!!!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

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

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

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

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


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

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


 




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


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

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