Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.09.2013, 20:24   #51
Dimka-novitsek
Форумчанин
 
Аватар для Dimka-novitsek
 
Регистрация: 22.04.2013
Сообщений: 588
По умолчанию

Хм........ Я задал и прототипу, и определению функции тип void, нажал эф5, вылезла ошибка. Я не удивлён, перенес определение функции в public: ошибка не ушла!!
cpp(78): error C2511: void Cat::Метод(int): перегруженная функция-член не найдена в "Cat"
Dimka-novitsek вне форума Ответить с цитированием
Старый 10.09.2013, 20:53   #52
Dimka-novitsek
Форумчанин
 
Аватар для Dimka-novitsek
 
Регистрация: 22.04.2013
Сообщений: 588
По умолчанию

Ну чего она прегруженная? Ничего же подобного!
Dimka-novitsek вне форума Ответить с цитированием
Старый 10.09.2013, 20:55   #53
Igor95
Форумчанин
 
Регистрация: 03.01.2013
Сообщений: 388
По умолчанию

Вы ничего не поняли зи того, что я написал ранее.
Нет метода void Метод(int) в классе Cat. Не объявлен этот метод в данном классе. Почему компилятор говорит - перегруженная?
Ответ: в области видимости Cat (private-области видимости) объявлен метод с идентификатором Метод. Компилятор, просматривая область видимости класса Cat находит нечто по имени Метод... сопоставляет эти два идентификатора - Метод и Метод и обнаруживает, что они различаются только сигнатурами формальных параметров. отсюда. компилятор делает вывод, что данная функция-член - перегружена... НО! объявление такой функции в классе отсутствует, а значит функция Метод(int) - не функция-член класса Cat!!

Объявите функцию-член void Метод(int); в классе Cat.
И не забудьте дать определения методам - Метод() и Метод(int).
___________________________________ __________________________________

:: - оператор разрешения области видимостию. Указывает к какой области видимости относится идентификатор
Пример: Cat::SomeIdentificator - укажет, что имя SomeIdentificator следует искать в области видимости класса/пространства имен Cat.

Последний раз редактировалось Igor95; 10.09.2013 в 21:00.
Igor95 вне форума Ответить с цитированием
Старый 10.09.2013, 21:11   #54
Dimka-novitsek
Форумчанин
 
Аватар для Dimka-novitsek
 
Регистрация: 22.04.2013
Сообщений: 588
По умолчанию

Спасибо!!!!
Dimka-novitsek вне форума Ответить с цитированием
Старый 10.09.2013, 21:16   #55
Igor95
Форумчанин
 
Регистрация: 03.01.2013
Сообщений: 388
По умолчанию

Решили проблему?
Igor95 вне форума Ответить с цитированием
Старый 10.09.2013, 21:47   #56
Dimka-novitsek
Форумчанин
 
Аватар для Dimka-novitsek
 
Регистрация: 22.04.2013
Сообщений: 588
По умолчанию

Да, имено эта ошибка ушла! Когда обьявляю в классе Метод(int) а когда Метод() ошибка таки была.

СПАСИБО!!! Я пока сам, до полных непоняток.
Dimka-novitsek вне форума Ответить с цитированием
Старый 10.09.2013, 21:53   #57
Igor95
Форумчанин
 
Регистрация: 03.01.2013
Сообщений: 388
По умолчанию

А не проще книгу прочесть?
Igor95 вне форума Ответить с цитированием
Старый 10.09.2013, 21:56   #58
Dimka-novitsek
Форумчанин
 
Аватар для Dimka-novitsek
 
Регистрация: 22.04.2013
Сообщений: 588
По умолчанию

Да когда начинаю писать, что-то не клеится. Доходит с трудом! Потом еще перечитываю. Склеится-пойду читать дальше!
Dimka-novitsek вне форума Ответить с цитированием
Старый 10.09.2013, 21:59   #59
Dimka-novitsek
Форумчанин
 
Аватар для Dimka-novitsek
 
Регистрация: 22.04.2013
Сообщений: 588
По умолчанию

А вот,

Код:
#include <string> 
#include <iostream> // для объекта cout
using namespace std;

#include<iomanip>
//Этот файл содержит большую часть манипуляторов C++. Если вы не знаете, что такое манипулятор, не беспокойтесь. Просто подключите это файл вместе с iostream, хуже не станет.
#include<fstream> 
//Подключается при работе с файлами.

   class Cat
		{
	 public:
	    Cat(int initialAge=5); 
	    ~Cat();
	    int GetAge() const; // метод доступа const функция доступа к данным-членам класса без права их изменения
	    void SetAge (int age);
	    void Meow();
		void Wydam()  {Bam();};	  //статический метод
		int Bgsamm();
		void Metod(int);
	  private:
	    int itsAge;	// статические переменные класса (Статическое поле)
		int B;
		
	//	Cat(){itsAge=0; B=8;};
		void Bam( ){cout << "Wydam\n";
		                          int BG=itsAge+ B;
		                          cout << BG;   } 
	    
	    };
  										  
 // конструктор класса Cat
  Cat::Cat(int initialAge)
   {
   itsAge = initialAge;
   cout << "Cat constructor\n";
   }

  Cat::~Cat() // деструктор, который не выполняет никаких действий
  {
  cout << "Cat destructor\n";
  }

 

 int Cat::Bgsamm() 
 {
  return (itsAge++); 
 }


 

 // определение функции SetAge как открытого
 // метода доступа к данным класса
 void Cat::SetAge(int age)
 {
    // присваиваем переменной-члену itsAge
    // значение переданного парйметра age
  itsAge = age;
 }

 

      // Определение метода Meow
	  // возвращает void
	  // параметров нет
	  // используется для вывода на экран текста "Meow"
  void Cat::Meow()
  {
  cout << "Meow.\n";
  }

 

  Cat obyekt;
  void Cat::Metod (int tselaya=100) //обычный метод
  {tselaya=tselaya+initialAge; cout << tselaya;cout << "  целая\n";}	  

 int main()
 {
     Cat Frisky; 
     Frisky.Meow();
	
     cout << объект.GetAge();
	 obyekt.Bgsamm();
     obyekt.Wydam();
	 obyekt. Bam();
	 obyekt.Metod();
	 system("pause");
    return 0;
 }
cpp(78): error C2065: initialAge: необъявленный идентификатор

Он же обьявлен вроде в конструкторе? Что ему не так? Или где и как я его обьявил?
Dimka-novitsek вне форума Ответить с цитированием
Старый 10.09.2013, 22:04   #60
Igor95
Форумчанин
 
Регистрация: 03.01.2013
Сообщений: 388
По умолчанию

Код:
 void Cat::Metod (int tselaya=100) //обычный метод
  {tselaya=tselaya+initialAge; cout << tselaya;cout << "  целая\n";}
И где у Вас в классе объявлен такой идентификатор - initialAge?
initialAge - формальный параметр конструктора, имеет область видимости - конструктор.
Почитайте лучше Шилдта.
Igor95 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Прошу прощения. Но у меня опять проблема. Написал код но что то неправельно потправте меня. Sergey 23 Visual C++ 2 15.09.2012 19:59
CheckBox, что-то у меня не получается... Snekich Microsoft Office Excel 2 18.12.2011 20:12
Меня что, кто-то атакует? Altera Свободное общение 9 03.10.2010 18:34
Меня хакнули, что делать? Alex Cones Свободное общение 6 03.03.2010 23:14
что-то у меня не получается dinozavr Помощь студентам 10 22.04.2009 21:45