Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Пишем новый класс 
:(
    Опции темы
фигурист
Дата 22.11.2008, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Создаю класс. Читал что принято разделять объявление класса и его реализацию. 
Но при использовании созданного класса надо включать его заголовочный файл  (#include *.h). 
А как быть если конструктор объявлен в файле*.cpp, этот файл тоже надо объявлять или нет?
PM MAIL   Вверх
destrd
Дата 22.11.2008, 17:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Книжку по Цпп почитайте, так на всякий случай.
--------------------
Some people, when confronted with a problem, think, "I known, I'll use regular expressions." Now they have two problems.        -- Jamie Zawinski in comp.lang.emacs
PM MAIL ICQ   Вверх
фигурист
Дата 22.11.2008, 18:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Читаю книжку Архангельского, вроде хорошая книга, но иногода возникают вопросы))

Так надо или нет?
PM MAIL   Вверх
Kallikanzarid
Дата 22.11.2008, 19:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Выкиньте и купите книжку Страуструпа.
PM MAIL   Вверх
jonie
Дата 23.11.2008, 02:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

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



Цитата

А как быть если конструктор объявлен в файле*.cpp
а зачем объявлять конструктор в cpp ?? обычно там как раз реализация идет..


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
mrbrooks
Дата 24.11.2008, 09:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

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



Цитата(Kallikanzarid @  22.11.2008,  19:45 Найти цитируемый пост)
Выкиньте и купите книжку Страуструпа. 

а вы ее сами прочитали?
PM MAIL   Вверх
baldina
Дата 24.11.2008, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

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



примерно так:
Код

// myclass.h
#ifndef _MYCLASS_H_
#define _MYCLASS_H_

class MyClass {
    int a_;
  public:
    MyClass (int);
    int operator()() const;
};

#endif

// myclass.cpp
#include "myclass.h"

MyClass::Myclass (int x) : a_(x) 
{
}

int MyClass::operator()() const
{
   return a_;
}

// main.cpp

#include "myclass.h"

int main ()
{
   MyClass x (10);
   int y = x(); // store value 10 in y
}


Добавлено через 1 минуту и 56 секунд
что бы вопросов не возникало лучше 2-3 книги разных авторов читать одновременно, вопросов будет меньше.
Рекомендую Стивен Прата "Язык программирования C++. Лекции и упражнения" - хороший учебник
PM MAIL   Вверх
фигурист
Дата 20.12.2008, 11:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Продолжаю овладевать техникой написания классов и вот какой возник вопрос: 
В файле MyMassive.h, пишем следующее: 

class MyMassive 
{ 
public: 
void MyFunc(void); 
}; 

void MyMassive::MyFunc(void) 
{ 
ShowMessage("This is method of my class!"); 
} 

Теперь в приложении файле UTest.cpp пишем: 

#include "MyMassive.h" 
//------------------------------------- 
MyMassive *G; 
void __fastcall TForm1::Button1Click(TObject *Sender) 
{ 
G->MyFunc(); 
{ 

Вариант работает, если реализация функции void MyFunc(void) записана в h-файле (как в приведенном примере). Если реализацию функции прописывать в файле MyMassive.cpp, то компилятор выдает ошибку: 
[Linker Error] Unresolved external 'MyMassive::MyFunc()' referenced from C:\DOCUMENTS AND SETTINGS\ДИМА\РАБОЧИЙ СТОЛ\ПРОГРАММЫ НА C++\TEST\UTEST.OBJ 

Подскажите, в чем проблема (или направьте где это объясняется). 
Заранее спасибо.
PM MAIL   Вверх
mrbrooks
Дата 20.12.2008, 11:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

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



Цитата(Kallikanzarid @  22.11.2008,  19:45 Найти цитируемый пост)
Выкиньте и купите книжку Страуструпа. 

не самое лучшее решение для новичка  smile 

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


Новичок



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

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



Цитата

Вариант работает, если реализация функции void MyFunc(void) записана в h-файле (как в приведенном примере). Если реализацию функции прописывать в файле MyMassive.cpp, то компилятор выдает ошибку: 
[Linker Error] Unresolved external 'MyMassive::MyFunc()' referenced from C:\DOCUMENTS AND SETTINGS\ДИМА\РАБОЧИЙ СТОЛ\ПРОГРАММЫ НА C++\TEST\UTEST.OBJ 


Я так понимаю, что необходимо разделять объявление класса и его реализацию между заголовочным файлом ( к примеру, MyMassive.h) и файлом реализации (к примеру, UTest.cpp).

напишите, прав ли я.
PM MAIL   Вверх
Vyacheslav
Дата 22.12.2008, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

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



Цитата(фигурист @  20.12.2008,  11:12 Найти цитируемый пост)
[Linker Error] Unresolved external 'MyMassive::MyFunc()' referenced from C:\DOCUMENTS AND SETTINGS\ДИМА\РАБОЧИЙ СТОЛ\ПРОГРАММЫ НА C++\TEST\UTEST.OBJ 

MyMassive.cpp надо добавить в проект


--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

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

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

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


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

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


 




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


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

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