Разделение интерфейса и реализации
От: D189D  
Дата: 19.11.05 17:48
Оценка:
Есть определение класса в .h файле, к примеру

//classA.h

namespace n1
{

class A
{
private:
    int* Array;
    ...
public:
    void Method1();
    void Method2();
    ...
}

}


Реализация методов A::Method1, A::Method2 и т.д находится в classA.cpp:

//classA.cpp
#include "classA.h"

namespace n1
{

void A::Method1() {/*Code*/}
void A::Method2() {/*Code*/}
...

}


При включении в свою программу classA.h и попытке создать объект класса A получаем законную ошибку линковщика. Однако в Стауструпе подразумевается, что так делать можно (ст. 256). А вообще как добиться того, что мне надо, включая только classA.h?
Re: Разделение интерфейса и реализации
От: Dair Россия  
Дата: 19.11.05 18:07
Оценка:
DD>При включении в свою программу classA.h и попытке создать объект класса A получаем законную ошибку линковщика. Однако в Стауструпе подразумевается, что так делать можно (ст. 256). А вообще как добиться того, что мне надо, включая только classA.h?

А зачем???
Re[2]: Разделение интерфейса и реализации
От: D189D  
Дата: 19.11.05 18:16
Оценка:
Здравствуйте, Dair, Вы писали:

DD>>При включении в свою программу classA.h и попытке создать объект класса A получаем законную ошибку линковщика. Однако в Стауструпе подразумевается, что так делать можно (ст. 256). А вообще как добиться того, что мне надо, включая только classA.h?


D>А зачем???


Никакой реальной необходимости нет, ради интереса
Re: Разделение интерфейса и реализации
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 19.11.05 18:28
Оценка:
Здравствуйте, D189D, Вы писали:

DD>...

DD>При включении в свою программу classA.h и попытке создать объект класса A получаем законную ошибку линковщика. Однако в Стауструпе подразумевается, что так делать можно (ст. 256). А вообще как добиться того, что мне надо, включая только classA.h?

В Стауструпе подразумевается, что ты будешь линковать с соответсвующим модулем, полученным из .cpp. ж-)
У тебя же компиляция прошла успешно? Вот и отлично. Компилятор, компилируя модуль, где используется класс, не знает ничего о его реализации — вот тебе и отделение реализации от интерфейса. А создание исполняемого модуля из объектников и либ к C++ мало относится.
Маньяк Робокряк колесит по городу
Re: Разделение интерфейса и реализации
От: Аноним  
Дата: 19.11.05 19:00
Оценка:
А разделение интерфейса и реализации на уровне бинарников делается при помощи виртуальных функций
Re: Разделение интерфейса и реализации
От: NovaCxarmulo Россия http://timofey.koolin.ru
Дата: 20.11.05 21:12
Оценка:
А вообще как добиться того, что мне надо, включая только classA.h?

попробуй #import посмотреть
Posted via RSDN NNTP Server 1.9
Сражение выигрывает тот, кто твердо решил его выиграть
(с) Л.Н. Толстой
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.