Здравствуйте. Я новичок в C++. Программирую в VisualStudio2008 Возникла проблема при подключении заголовочных файлов. У меня есть файл MyClasses.h:
#ifndef MYCLASSES_H
#define MYCLASSES_H
namespace my {
// Some template classes
...
MyClass {declaration} // My class (not template) contains static methods only
// Other classes declaration
};
#endif
Соответственно есть файл MyClasses.cpp:
namespace my {
// implementation of MyClass and other classes
}
MyClass состоит из нескольких статических методов и всё (без переменных). Заголовочный файл уже используется как минимум один раз в другом проекте (но в том же решении). Теперь возникла необходимость подключить его в тот же проект, в котором он (MyClasses.h) определён. Но при подключении я не могу использовать ни MyClass::method() ни my::MyClass::method() (error C2653: 'MyClass' : is not a class or namespace name + error C3861: 'method': identifier not found). Пробовал объявлять (просто объявлять) MyClass в том файле, куда хочу его подключить:
#include "MyClasses.h"
class MyClass;
но компилятор не видит реализацию класса (error C2027: use of undefined type 'MyClass').
Подскажите пожалуйста мне непутёвому, как правильно подключить MyClasses.h? Заранее спасибо
UPD: Если я просто делаю
#include "MyClasses.h"
, то получаю
error C2653: 'MyClass' : is not a class or namespace name
на строчке
MyClass::StaticMethod(); // или так my::MyClass::StaticMethod();
Если я использую предварительное объявление класса так
#include "MyClasses.h";
class MyClass;
или так
#include "MyClasses.h";
namespace my { class MyClass; }
то получаю ошибку
error C2027: use of undefined type 'my::MyClass'
на строчке
my::MyClass::StaticMethod();