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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.05.2012, 13:43   #1
Ольга790
Пользователь
 
Регистрация: 18.12.2011
Сообщений: 14
По умолчанию как сделать чтоб каждый класс был отдельно?

jivotnoe.h

Код:
#pragma once

#include "resource.h"

class jivotnoe
{
public:
    // default constructor
   jivotnoe(void);
    // constructor with params
    jivotnoe(const char *name, int chisloconech, int chislopotom);
    // destructor
	~jivotnoe(void);
    //~jivotnoe();
    // display info
    virtual void ShowInfo() const;
protected:
    char *m_name;    // классификация
    int m_chisloconech;    // число конечностей
    int m_chislopotom;        // число потомков
};

// domachnee jivotmoe
class Domjivotnoe : public jivotnoe
{
public:
    // default
    Domjivotnoe();
    // with params
    Domjivotnoe(const char *name, int chisloconech, int chislopotom);
    // and one more
    Domjivotnoe(const char *name, int chisloconech, int chislopotom, const char *clichka);
    // destructor
    ~Domjivotnoe();
    // set diploma theme
    void Setclichka(const char *clichka);
    // set chislopotom
    void Setchislopotom(int chislopotom);
    // display info
    virtual void ShowInfo() const;
private:
    char *m_clichka;    // clichka jivotnogo
};



jivotnoe.cpp
Код:
#include "stdafx.h"
#include "jivotnoe.h"
#include <iostream>
#include <cstring>

using namespace std;
#define MAX_LOADSTRING 100

// default constructor
jivotnoe::jivotnoe(void)
{// default values
    m_name = NULL;
    m_chisloconech = 0;
    m_chislopotom = 0;
}


// constructor with parameters
jivotnoe::jivotnoe(const char *name, int chisloconech, int chislopotom)
{
    // set name
    if(name != NULL)
    {
        // memory allocation
        try
        {
            m_name = new char[strlen(name) + 1];
        }
        catch(...)
        {
            // error
            exit(0);
        } // end of try-catch

        strcpy(m_name, name);
    } // end of if

    // set course and ID
    if(chisloconech >= 1 && chisloconech <= 6)
    {
        m_chisloconech = chisloconech;
    } // end of if
    m_chislopotom  = chislopotom ;
}
// destructor

jivotnoe::~jivotnoe(void)
{ // free memory
    if(m_name != NULL)
    {
        delete [] m_name;
    } // end of if
}

// show info
void jivotnoe::ShowInfo() const
{
    if(m_name != NULL)
    {
        cout << "Name: " << m_name << "\t" << "chisloconech: " << m_chisloconech << "\t" << "chislopotom : " << m_chislopotom  << endl;
    } // end of if
    else
    {
        // no name, nothing to do
        cout << "Student has no name" << endl;
    } // end of else
}

// ----- class DipStudent -----

// default constructor
Domjivotnoe::Domjivotnoe()
{
    // default value
    m_clichka = NULL;
}

// with params
Domjivotnoe::Domjivotnoe(const char *name, int chisloconech, int chislopotom )  : jivotnoe(name, chisloconech, chislopotom )
{
    // default value
    m_clichka = NULL;
}

// one more...

	Domjivotnoe::Domjivotnoe(const char *name, int chisloconech, int chislopotom, const char *clichka)  : jivotnoe(name, chisloconech, chislopotom )
{
    // set theme
    if(clichka != NULL)
    {
        try
        {
            m_clichka = new char[strlen(clichka) + 1];
        }
        catch(...)
        {
            // error
            exit(0);
        } // end of try-catch

        strcpy(m_clichka, clichka);
    } // end of if
}

// destructor
Domjivotnoe::~Domjivotnoe()
{
    // free memory
    if(m_clichka != NULL)
    {
        delete [] m_clichka;
    } // end of if
}

// set clichka
void Domjivotnoe::Setclichka(const char *clichka)
{
    // free memory, allocate new block and copy new theme
    if(clichka != NULL)
    {
        if(m_clichka != NULL)
        {
            delete [] m_clichka;
        } // end of if

        try
        {
            m_clichka = new char[strlen(clichka) + 1];
        }
        catch(...)
        {
            // error
            exit(0);
        } // end of try-catch

        strcpy(m_clichka, clichka);
    } // end of if
}

// set ID
void Domjivotnoe::Setchislopotom(int chislopotom)
{
    m_chislopotom = chislopotom;
}

// show info
void Domjivotnoe::ShowInfo() const
{
    // same as in Student::ShowInfo()
    if((m_name != NULL) && (m_clichka != NULL))
    {
        cout << "Name: " << m_name << "\t" << "chisloconech: " << m_chisloconech << "\t" << "chislopotom: " << m_chislopotom << "\t" << "clichka jivotnogo: " << m_clichka << endl;
    } // end of if
    else
    {
        cout << "Student has no name or diploma theme" << endl;
    } // end of else
}

и почему он просто выводит белый экран?

Последний раз редактировалось ACE Valery; 03.05.2012 в 16:27.
Ольга790 вне форума Ответить с цитированием
Старый 03.05.2012, 14:03   #2
artush1984
Форумчанин
 
Аватар для artush1984
 
Регистрация: 27.04.2009
Сообщений: 184
По умолчанию

А где ? main
Hа C я могy пpосто делать ошибки, на C++ я могy их наследовать!
artush1984 вне форума Ответить с цитированием
Старый 03.05.2012, 14:25   #3
Ольга790
Пользователь
 
Регистрация: 18.12.2011
Сообщений: 14
По умолчанию

не знаю.. а куда его надо написать и что вообще в него надо писать.. я немного не поняла эту задачу..и что она вообще должна делать.. что то пыталась написать но видать не особо получилось( не подскажите как ее можно сделать рабочей?

Последний раз редактировалось Ольга790; 03.05.2012 в 14:29.
Ольга790 вне форума Ответить с цитированием
Старый 03.05.2012, 15:23   #4
Krok27
Форумчанин
 
Аватар для Krok27
 
Регистрация: 08.07.2010
Сообщений: 505
По умолчанию

Цитата:
как сделать чтоб каждый класс был отдельно?
В отдельных файлах что ли?
Знающий не говорит, говорящий не знает (С) Лао Цзы
Krok27 вне форума Ответить с цитированием
Старый 03.05.2012, 15:29   #5
Ольга790
Пользователь
 
Регистрация: 18.12.2011
Сообщений: 14
По умолчанию

сказали надо чтоб было на каждый класс был отдельный .cpp и .h
текст задачи забыла скинуть: создать класс животное, имеющий классиикацию(указатель на строку), число конечностей, число потомков. определить конструкторы, деструктор, и функцию печати. создать Public-произвольный класс - домашнее животное, имеющий кличку. опредлеить кон-ры по умолчанию и с разным числом параметров, дестр-ры, фун-ию печати. определить фун-ии предназначения названия клички и числа потомков.
Ольга790 вне форума Ответить с цитированием
Старый 04.05.2012, 08:01   #6
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

Цитата:
Сообщение от Ольга790 Посмотреть сообщение
не знаю.. а куда его надо написать и что вообще в него надо писать.. я немного не поняла эту задачу..
Функция main() должна быть в любой программе на C++.
Вы взяли у кого-то кучу кода, и хотите чтобы кто-то другой довел ее до ума? А вы тогда что будите делать?
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Старый 04.05.2012, 11:08   #7
Krok27
Форумчанин
 
Аватар для Krok27
 
Регистрация: 08.07.2010
Сообщений: 505
По умолчанию

А вот это понравилось:
Код:
// ----- class DipStudent -----

// default constructor
Domjivotnoe::Domjivotnoe()
{
Хорошо, что человек, написавший код для Ольга790 не написал
Код:
// ----- class Olga790 -----
typedef Domjivotnoe Olga790;
Знающий не говорит, говорящий не знает (С) Лао Цзы
Krok27 вне форума Ответить с цитированием
Старый 04.05.2012, 14:19   #8
SergeyCh
Пользователь
 
Регистрация: 22.04.2012
Сообщений: 27
По умолчанию Как сделать чтоб каждый класс был отдельно

Судя по всему, вы пытаетесь приспособить где-то найденный класс для учёта студентов ( cout << "Student has no name" << endl; .... // set course and ID) под своё задание. И плохо получается.
Попробуйте иcпользовать этот пример -

Код:
#include <string>
class Animal
{
protected:
    std::string m_strName;
 
    // We're making this constructor protected because
    // we don't want people creating Animal objects directly,
    // but we still want derived classes to be able to use it.
    Animal(std::string strName)
        : m_strName(strName)
    {
    }
 
public:
    std::string GetName() { return m_strName; }
    const char* Speak() { return "???"; }
};
 
class Cat: public Animal
{
public:
    Cat(std::string strName)
        : Animal(strName)
    {
    }
 
    const char* Speak() { return "Meow"; }
};
 
class Dog: public Animal
{
public:
    Dog(std::string strName)
        : Animal(strName)
    {
    }
 
    const char* Speak() { return "Woof"; }
};
 
int main()
{
    Cat cCat("Fred");
    cout << "cCat is named " << cCat.GetName() << ", and it says " << cCat.Speak() << endl;
 
    Dog cDog("Garbo");
    cout << "cDog is named " << cDog.GetName() << ", and it says " << cDog.Speak() << endl;
 
    Animal *pAnimal = &cCat;
    cout << "pAnimal is named " << pAnimal->GetName() << ", and it says " << pAnimal->Speak() << endl;
 
    Animal *pAnimal = &cDog;
    cout << "pAnimal is named " << pAnimal->GetName() << ", and it says " << pAnimal->Speak() << endl;
 
    return 0;
}
Прежде всего он работает. Во-вторых, если вы немного знаете английский, то сможете пользоваться и курсом С++ откуда он взят - 12.1 — Pointers and references to the base class of derived objects
По-моему мнению, это лучший существующий учебник С++, написанный в период с 2007 по 2012.
Когда вы подготовите код и он будет компилироваться, разделите определения классов в заголовочные файлы .h, а реализацию (функции-члены классов) - в .cpp файлы. В .cpp файлы добавьте соответствующие заголовочные файлы классов.

Последний раз редактировалось SergeyCh; 04.05.2012 в 14:21.
SergeyCh вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как сделать тут отдельно конструктор и класс elf01 C++ Builder 0 01.05.2012 21:09
как сделать, чтобы полукруг был пунктирным? gylayko Помощь студентам 7 18.12.2011 16:01