C++ Интерфейс и реализация

Автор smallNix, 28 марта 2012, 02:23:39

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

smallNix

 Доброго времени суток. Вопрос с одной стороны простой, с другой - не такой простой  :) Имеем следующую ситуацию: класс... назовём его "printer", в нём всего 1-н открытый метод - void printData (const char* pData); Который выводит на экран строку, указатель на которую является параметром метода. С помощью "g++ -c printer.h printer.cpp" получаем "printer.o" Теперь в отдельной папке создаём файл main.cpp, в котором создаём объект класса printer и вызываем метод printData, с какой-нибудь константой (в файле, конечно, напишем "#include "printer.h" "). Теперь в эту папку копируем printer.h и printer.o и пытаемся скомпилисть, например так: "g++ -c main.cpp printer.h printer.o" или так  "g++ -c -о main.cpp printer.h printer.o". Линковщик негодует. Возникает вопрос: можно ли описанным способом отделить интерфейс от реализации и в чём, собственно, ошибка? о_О
P.S.: На тёмную сторону не перехожу - любопытством мучаюсь ;)
Кто-то же должен что-то делать...

ZEN

Crimea is Ukraine

smallNix

Zen, спасибо за ответ. Проблема решена  ::) Да её собственно и не было - просто я по запарке (писал тест ночью), пропустил в реализации метода printData область действия класса.
Так что описанный мной в вопросе способ работает: можно просто дать команду:

g++ -c main.cpp printer.h printer.o && g++ -o pr main.o printer.o && ./pr

Кто-то же должен что-то делать...