Zapętlenie #include przy wielopoziomowym dziedziczeniu

0

Cześć.
Mam problem następującej natury:
Chciałem stworzyć klasę MyAppException dziedziczącą po runtime_error. Po klasie tej dziedziczyłyby klasy Component1Exception, Component2Exception, Component3Exception, ....
Czyli w pliku MyAppException.h nie mam includów poza <string>, a w plikach Component1Exception.h, ... mam jeden include - MyAppException.h
Niestety po zaincludowaniu w kilku miejscach projektu plików ComponentXException.h dostaję błąd:
error: expected class-name before ‘{’ token
Jak temu zaradzić? Rozwiązania z forward-declaration chyba odpadają, prawda?

0

W dziesiątej linijce drugiego pliku brakuje średnika :P

0

Nie widzę sensu w zamieszczaniu plików, bo wyglądają tak:

MyAppException.h

 
#include <string>

class MyAppException : public runtime_error {
  MyAppException(const std::string msg = "") : runtime_error(msg) {}
};

ComponentXException.h

 
#include <string>
#include "MyAppException.h"

class ComponentXException : public MyAppException {
  ComponentXException(const std::string msg = "") : MyAppException(msg) {}
};

i w innych plikach projektu, gdzie rzucam te wyjątki mam
#include "ComponentXException.h" w zależności od tego jaki wyjątek rzucam. A rzucam tak:

if(costam)
  throw ComponentXException("Exception");
0

Mam też klasę ClassA, która ma pole - obiekt ClassB. Zarówno ClassA, jak i ClassB rzucają wyjątki - każda z nich inny. W momencie, gdy do ClassB dodam include jednego z ComponentXException, podczas gdy w klasie ClassA już jest include innego ComponentXException dostaje ten błąd.

1

Nie powinieneś przypadkiem includować <stdexcept>w MyAppException.h?
http://www.cplusplus.com/reference/std/stdexcept/runtime_error/

1 użytkowników online, w tym zalogowanych: 0, gości: 1