2014-12-08 2 views
0

Я имеющий 4 файла в моем проекте, и когда я пытаюсь скомпилировать его, я получаю эту ошибку:включая CPP файлы несколько раз

error C2011: 'Details' : 'class' type redefinition 

Я думаю, это потому, что я использовал #include"AClass.cpp" три раза в моей файлы, и он загружается три раза, но когда я удаляю два других #include"AClass.cpp", компиляция завершается с ошибкой, потому что в этих файлах ACAS не найден.

+1

См. Http://stackoverflow.com/questions/8020113/c-include-guards – Dronz

+3

Не включайте файлы '.cpp', которые должны быть файлами реализации. Вы должны включать только заголовочные файлы (обычно '.h' или' .hpp'). – cdhowie

ответ

1

Как уже упоминалось в комментариях, вы вообще не включаете файлы cpp. Но в любом случае с файлами заголовков вы можете столкнуться с той же ситуацией. Вот почему большинство из заголовков C++ упаковываются в follwoing макро на:

#ifndef SOME_HEADER_H 
#define SOME_HEADER_H 

class foo; 

#endif //SOME_HEADER_H 

Наверняка вы должны заменить SOME_HEADER с уникальным именем.

Конечно, есть ситуации (у меня был один из этих случаев, короткое время назад), где вы собираетесь включать заголовок несколько раз. Некоторые дженерики и некоторые другие магические вещи. Но в целом это хорошая рекомендация не делать этого.