2013-12-06 5 views
0

У меня есть два файла заголовка. decimal.h и integer.h, каждый из которых содержит их соответствующие классы. Я хочу написать что-то вроде этого.Заголовочные файлы, включая друг друга

//integer.h 
#ifndef INTEGER_H 
#define INTEGER_H 
#include "decimal.h" 
class Integer 
{ 
    ... 
    operator Decimal(); 
} 
#endif 

//decimal.h 
#ifndef DECIMAL_H 
#define DECIMAL_H 
#include "integer.h" 
class Decimal 
{ 
    ... 
    operator Integer(); 
} 
#endif 

Что дает мне проблемы в том, что, так как они в том числе каждый над ним ведет себя странно в Visual Studio и генерировать странные ошибки компиляции. Есть ли способ обойти это?

+0

Никогда хороший дизайн, чтобы сделать это. Попытайтесь их изолировать. – Abhineet

+0

Вы должны добавить точные сообщения об ошибках как часть своего вопроса, так как многие вещи в Visual Studio можно считать «странными» ... – badgerr

+0

@badgerr - независимо от ваших субъективных суждений, проблема здесь ясна и сообщения об ошибках, которые такая ошибка возникает часто «странно», даже с вашим любимым компилятором. –

ответ

6

Возможно, вам нужна только декларация о переходе?

// In Integer.h 
class Decimal; 
class Integer 
{ 
    ... 
    operator Decimal(); 
}; 

(Вы пропустили последнюю точку с запятой в коде, кстати.)

+0

К сожалению. Я привык к java, и я не копировал и не вставлял его из редактора. Также для этого нужно, чтобы обе были в одном и том же заголовке справа? – chasep255

+0

Да. Показанный код должен быть в Integer.h. Сделайте то же самое в Decimal.h. –

+0

Re: «Сделайте то же самое в Decimal.h» - хороший совет, но обратите внимание, что это не технически необходимо, чтобы избавиться от проблемы; оригинальная версия 'Decimal.h' будет работать нормально, если' Integer' не пытается '# include'. –

Смежные вопросы