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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.09.2009, 11:41   #1
olik83
Пользователь
 
Регистрация: 20.09.2009
Сообщений: 17
Вопрос методы ошибка

Здравствуйте.
задание реализовать класс mammals и предусмотреть методы размножение и кормления.
в дальнейшем класс будет абстрактным и базовым. для виртуального наследования.
вот у меня вопрос. я реализовываю функцию репродукции, но он ни в какую не хочет её пропускать. подскажите пожалуйста в чем ошибка??
хиддер:
Код:
#pragma once
#include "stdafx.h"

class mammals
{
	int legs;
	int eyes;
	int tail; //хвост
	bool fill; //сытость
	mammals *mam[10];
public:
	mammals(int,int,int);
	mammals(void);
	~mammals(void);
	void reproduction(mammals*, int);
	void feed(int);
	void PrintMam();
};
реализация методов:
Код:
#include "stdafx.h"
#include "mammals.h"
//#include "stdbool"
#include "windows.h"
//#include "iostream.h"
#include "string.h"
#include <iostream>
using namespace std;

mammals::mammals(void)
{
	legs=0;
	eyes=0;
	tail=0; 
	fill=false;
}
mammals::mammals(int ll, int ee, int tt):legs(ll),eyes(ee),tail(tt)
{
	fill=false;
}
mammals::~mammals(void)
{
}
void mammals::reproduction(mammals* mm, int index)
{	
		mam[index]=mm;
}
void mammals::feed(mammals &mm, int index)
{
	if (index <10)
	{ 
		mm.fill=false;
		cout<<"malo edy. mammals goloden!(("<<endl;
	}
	else
	{
		mm.fill=true
		cout<<"mammals syt!))"<<endl;
	}
}
olik83 вне форума Ответить с цитированием
Старый 28.09.2009, 12:03   #2
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,087
По умолчанию

Визуально вроде бы всё правильно. На что именно ругается студия? Какие ошибки выдаёт?
pu4koff вне форума Ответить с цитированием
Старый 28.09.2009, 12:06   #3
olik83
Пользователь
 
Регистрация: 20.09.2009
Сообщений: 17
По умолчанию

Цитата:
Сообщение от pu4koff Посмотреть сообщение
Визуально вроде бы всё правильно. На что именно ругается студия? Какие ошибки выдаёт?
она мне выдает ошибку:
error C2511: 'void mammals::feed(mammals &,int)' : overloaded member function not found in 'mammals'

на входе в метод кормления
olik83 вне форума Ответить с цитированием
Старый 28.09.2009, 12:13   #4
mMAg
Форумчанин
 
Аватар для mMAg
 
Регистрация: 11.08.2009
Сообщений: 433
По умолчанию

Ну конечно, вот объявление функции:
Код:
void feed(int);
и вот ее реализация:
Код:
void mammals::feed(mammals &mm, int index)
Только вот список параметров у них немного различается...

Где-то нужно изменить список параметров. Либо в объявлении, либо в описании.

И еще void PrintMam(); Реализовать неплохо было бы...
mMAg вне форума Ответить с цитированием
Старый 28.09.2009, 12:32   #5
olik83
Пользователь
 
Регистрация: 20.09.2009
Сообщений: 17
По умолчанию

Цитата:
Сообщение от mMAg Посмотреть сообщение
Ну конечно, вот объявление функции:
Код:
void feed(int);
и вот ее реализация:
Код:
void mammals::feed(mammals &mm, int index)
Где-то нужно изменить список параметров. Либо в объявлении, либо в описании.


И еще void PrintMam(); Реализовать неплохо было бы...
да! спасибо огромное, просмотрела!!!
убрала из списка параметров адрес маммалса и все заработало
принт реализовала уже, но с ним-то как раз проблем нет)

в классе mammals я определила виртуальным деструктор
хиддер
Код:
#pragma once
#include "stdafx.h"
#include "mammals.h"

class bull:public virtual mammals
{
protected: 
	int age;
	int horning; //рога
	int hooves; //копыта
	bool sex;   //пол
public:
	bull(void);
	~bull(void);
	bull(int,int,int,int,int,int);
	int get_meat();
	void PrintBull();
};
методы
Код:
#include "stdafx.h"
#include "bull.h"
#include "mammals.h"
#include "windows.h"
#include "string.h"
#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;

bull::bull(void)
:mammals(void)
{
	age=0;
	horning=0;
	hooves=0;
	sex=true;
}
bull::~bull(void)
{
	cout<<"\nbull dead too(("<<endl;
}
bull::bull(int ll, int ee, int tt, int aa, int hor, int hoo)
:mammals(ll,ee,tt)
{
	age=aa;
	horning=hor;
	hooves=hoo;
	sex=true;
}
int bull::get_meat()
{
	int i;
	srand(time_t(0));
	i=rand()%65-90;
	return i;
}
вопрос вот какой: надо ли прописывать в конструкторе виртуальность конструктора маммалса, надо ли в деструкторе вызывать виртуальный деструктор маммалса
и вопрос три - при литсинге с виртуальностью компилятор ругается на слово виртуал, а без- находит каждую строку ошибкой.

Последний раз редактировалось Stilet; 29.09.2009 в 10:49.
olik83 вне форума Ответить с цитированием
Старый 28.09.2009, 16:17   #6
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,087
По умолчанию

Зачем тут виртуальное наследование? Оно применяется совсем для других целей и в данном случае подозреваю что оно не нужно.
Код:
class bull:public virtual mammals
Цитата:
Сообщение от olik83 Посмотреть сообщение
вопрос вот какой: надо ли прописывать в конструкторе виртуальность конструктора маммалса
Нет. Конструктор по определению не может быть виртуальным
Цитата:
Сообщение от olik83 Посмотреть сообщение
надо ли в деструкторе вызывать виртуальный деструктор маммалса
Нет. Он вызовется автоматически после вызова деструктора bull
Цитата:
Сообщение от olik83 Посмотреть сообщение
и вопрос три - при литсинге с виртуальностью компилятор ругается на слово виртуал, а без- находит каждую строку ошибкой.
Какой именно виртуальностью? В классе bull или mammals?
pu4koff вне форума Ответить с цитированием
Старый 28.09.2009, 16:23   #7
olik83
Пользователь
 
Регистрация: 20.09.2009
Сообщений: 17
По умолчанию

Цитата:
Сообщение от pu4koff Посмотреть сообщение
Зачем тут виртуальное наследование? Оно применяется совсем для других целей и в данном случае подозреваю что оно не нужно.

Какой именно виртуальностью? В классе bull или mammals?
1) у меня множественное ромбовидное наследование должно быть
т.е. mammals<-bull, mammals<-sheep, (bull, sheep)<-овцебык

я просто все постепенно делаю и отлаживаю.

2)вопросы у меня по классу булл возникают, точнее про конструктор.
маммалс в первом посте ничем не изменился кроме исправления и метода принт
olik83 вне форума Ответить с цитированием
Старый 28.09.2009, 16:56   #8
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,087
По умолчанию

Цитата:
Сообщение от olik83 Посмотреть сообщение
1) у меня множественное ромбовидное наследование должно быть
т.е. mammals<-bull, mammals<-sheep, (bull, sheep)<-овцебык

я просто все постепенно делаю и отлаживаю.
Аааааа... Ну тогда действительно оно там надо
Цитата:
Сообщение от olik83 Посмотреть сообщение
2)вопросы у меня по классу булл возникают, точнее про конструктор.
маммалс в первом посте ничем не изменился кроме исправления и метода принт
Ну там еще это изменение должно быть, чтобы деструктор виртуальным таки был:
virtual ~mammals(void);

а как именно компилятор на virtual ругается? Что пишет?
pu4koff вне форума Ответить с цитированием
Старый 29.09.2009, 10:20   #9
olik83
Пользователь
 
Регистрация: 20.09.2009
Сообщений: 17
По умолчанию

Цитата:
Сообщение от pu4koff Посмотреть сообщение
а как именно компилятор на virtual ругается? Что пишет?
вчера убрала в конструкторе воид и у меня все заработало, сразу ни одной ошибки.
я в шоке.
olik83 вне форума Ответить с цитированием
Старый 29.09.2009, 10:47   #10
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,087
По умолчанию

Цитата:
Сообщение от olik83 Посмотреть сообщение
вчера убрала в конструкторе воид и у меня все заработало, сразу ни одной ошибки.
я в шоке.
Вместо mammals(void) просто написала mammals() и всё заработало? Тогда я тоже в шоке о_О
pu4koff вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Методы-в класс xMoNaHx Паскаль, Turbo Pascal, PascalABC.NET 16 23.06.2009 18:17
Численные методы improvement Общие вопросы .NET 4 08.05.2009 01:58
Методы сортировки. Teddy Помощь студентам 1 16.10.2008 19:08
Методы... Arkuz Свободное общение 6 11.10.2008 16:53
Методы автозагрузки Лубышев Операционные системы общие вопросы 12 01.07.2008 20:53