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
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/