#ifndef sss
#def sss
class SomeClass
{
public:
int somemethod();
...
protected:
...
};
int SomeClass::somemethod()
{
...
}
#endif
и всё это прописано , скажем в файле some.h
Скажите, как в Visual C++ 6.0 включить
этот файл чтобы не было никаких неожиданностей.
У меня было что-то вроде
файл 1.h: #include "some.h"
файл 2.h: #include "1.h"
но после таких вот нюансов
(типа в 1.h был глобальный обьект класса SomeClass)
VS писала мне какие-то ошибки.
Может посоветуете, как писать классы , чтобы
не было всяких неожиданностей.
[skipped]
F>У меня было что-то вроде F> файл 1.h: #include "some.h" F> файл 2.h: #include "1.h" F> но после таких вот нюансов F> (типа в 1.h был глобальный обьект класса SomeClass) F> VS писала мне какие-то ошибки.
IMHO дело в том, что ты прописал реализацию метода somemethod в хидере, и теперь включаешь его в проект более одного раза. Вот компилятор и ругается на то, что у тебя несколько тел для этой функции определено. В хидере должны быть только объявления, а всю реализацию надо сваливать в сорц.
Смотри мой вопрос "Как определить глобальную переменную в MFC Dll", там кажется похожая ситуация была.
F>и всё это прописано , скажем в файле some.h F>Скажите, как в Visual C++ 6.0 включить F> этот файл чтобы не было никаких неожиданностей.
F>У меня было что-то вроде F> файл 1.h: #include "some.h" F> файл 2.h: #include "1.h" F> но после таких вот нюансов F> (типа в 1.h был глобальный обьект класса SomeClass) F> VS писала мне какие-то ошибки.
F>Может посоветуете, как писать классы , чтобы F>не было всяких неожиданностей.
F>Заранее благодарен F> Дмитрий Николаев F>
Если уж ты решил написать реализацию функции в заголовочном файле, то делай это в теле класса:
class SomeClass
{
...
public:
int myMethod() { return 10; }
};
Или пиши реализацию в cpp — файле.
Кроме того, нельзя определять глобальную переменную в заголовочном файле. Можно писать только объявление:
extern int nGlobalVar;
А уже в каком-нибудь cpp — файле написать:
int nGlobalVar = 12345;
Любите книгу — источник знаний (с) М.Горький
Re: Как правильно пользоваться классами
От:
Аноним
Дата:
10.06.02 12:56
Оценка:
Здравствуйте faustment, Вы писали:
F>У меня есть класс
F>и всё это прописано , скажем в файле some.h F>Скажите, как в Visual C++ 6.0 включить F> этот файл чтобы не было никаких неожиданностей.
F>У меня было что-то вроде F> файл 1.h: #include "some.h" F> файл 2.h: #include "1.h" F> но после таких вот нюансов F> (типа в 1.h был глобальный обьект класса SomeClass) F> VS писала мне какие-то ошибки.
F>Может посоветуете, как писать классы , чтобы F>не было всяких неожиданностей.
F>Заранее благодарен F> Дмитрий Николаев F>
Здравствуйте flyker, Вы писали:
F>Здравствуйте Bell, Вы писали:
B>>Кроме того, нельзя определять глобальную переменную в заголовочном файле. Можно писать только объявление:
B>>
B>>extern int nGlobalVar;
B>>
B>>А уже в каком-нибудь cpp — файле написать:
B>>
B>>int nGlobalVar = 12345;
B>>
F>Это не так, можно определять константы, перечисления.
Это именно так, т.к. в данном случае речь шла именно о переменной, а не о константе и не о перечислении.
Что же касается констант и перечислений — то их действительно можно определять в заголовочных файлах, и это не вызовет тех проблем, с которых все собственно и началось...