Проблема в разделении интерфейса и реализации - PullRequest
1 голос
/ 06 февраля 2011

Это первый раз, когда я пытаюсь разделить класс в отдельном заголовочном файле, но я получаю сообщение об ошибке. Пожалуйста, помогите мне. Спасибо КОД:

Моя основная функция:

#include <iostream>
#include <MyClass>
int MyClass::data;
int main()
{
    cout<<"data="<<MyClass::data;
    system("pause");
    return 0;
}

MyClass.h

#ifndef MyClass
#define <MyClass>
class MyClass
{
    static int data_;

};
#endif

Ошибка: фатальная ошибка C1083: Невозможно открыть включаемый файл: 'MyClass.h': Нет такого файла или каталога

Ответы [ 3 ]

5 голосов
/ 06 февраля 2011

Вы должны использовать

#include "MyClass.h"

угловые скобки для системных заголовков.

Также это data или data_?

Также было бы что-то лучшекак

#if !defined(MYCLASS_H_INCLUDED)
#define MYCLASS_H_INCLUDED

...

#endif

#define, так как имя, идентичное имени класса, будет источником проблем

2 голосов
/ 06 февраля 2011

Первая хорошая идея - разделить определение и реализацию на C ++.Ваша директива #include должна использовать ", а не < >, поскольку ваш заголовок не является системным заголовком.Или ваш заголовок не лежит в том же каталоге, что и файл cpp.

Это другая тема, но ОО - это больше, чем просто использование некоторых классов.Инкапсуляция статических переменных внутри класса не делает их менее глобальными ... По крайней мере, у них есть другое пространство имен ...

0 голосов
/ 06 февраля 2011

используйте #include "Myclass.h" вместо #include

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...