У меня проблема: Есть класс Bolvan: class Bolvan { private: char* device; /*и т.д.*/ protected: int sg_fd; public: struct FDError { const char* message; FDError (const char* p) { message = p; } }; Bolvan (char* io_device); ~Bolvan (); /*****И т.д.*****/
};
И у него есть конструктор: Bolvan::Bolvan (char* io_device) {
sg_fd = open (io_device, O_RDONLY); if (sg_fd < 0) { char *msg; sprintf (msg, "Unable to open device %s\n", io_device); #ifdef DEBUG sprintf (msg, "open (io_device, O_RDONLY) failed. \n Maybe device name is not valid.\n Check open() call in bolvan.cpp\n"); #endif throw FDError ((const char*)msg); } /***** И т.д. и т.п. */ }
Я в main задаю девайс и перехватываю исключение: int main (int argc, char* argv[]) { try { Bolvan CB ("/dev/hdc"); } catch (Bolvan::FDError e) { std::cerr << "File Descriptor error: " << e.message; return 1; } /******и т.д.***/ }
Так вот, при комиляции мне g++ пишет, что ФУНКЦИЯ CB НЕ ОПРЕДЕЛЕНА! Я пробовал Bolvan CB = Bolvan ("/dev/hdc");. Тот же результат Если исключение не перехватывать (убрать try & catch), то все работает. У Бьерна написано, что можно таким макаром перехватывать исключения из конструкторов. P.S.: Все нужные хидеры включены. P.P.S.:Заранее спасибо. Надеюсь на Ваш квалифицированны ответ