Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Метод возращает абстрактный класс.


Автор: Хоббит 22.1.2009, 09:35
Необходимо реализовать вот что.
MysqlRow базовый абстрактный класс, определяет интерфейс дочерних классов и общую функциональность.
Код

class MysqlRow() {
pubilc:
  ~MysqlRow();
  virtual string operator[](int index) = 0;
  virtual string operator[](string index) = 0;
  virtual string operator[](char* index) = 0;
  operator bool();
}


Есть производные классы MysqlArrayRow, MysqlAssocRow, в них реализованы виртуальные методы.

Есть метод MysqlRow fetchRow(MYSQL_FETCHMODE mode);
Который возращает либо MysqlArrayRow или MysqlAssocRow в зависимости от mode.

Так вот код MysqlRow row = fetchRow(FETCHMODE_ASSOC);
Дает ошибку, не возможно создать абстрактный класс. Что делать в таком случае? На c# так всегда делал.

Автор: MAKCim 22.1.2009, 09:46
Хоббит
объекты класса с хотя бы одним виртуальным методом создать нельзя
возвращай ссылку или указатель

Автор: vinter 22.1.2009, 10:15
Цитата(MAKCim @  22.1.2009,  10:46 Найти цитируемый пост)
объекты класса с хотя бы одним виртуальным методом создать нельзя

чисто-виртуальным

Автор: Alek86 22.1.2009, 10:18
Хоббит, твой класс MysqlRow чем-то напоминает интерфейс
в шарпе обьекты интерфейсов создавать нельзя тоже

Автор: MAKCim 22.1.2009, 11:28
Цитата(vinter @  22.1.2009,  10:15 Найти цитируемый пост)
чисто-виртуальным 

да, естественно

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)