Должен ли я вводить typedef в каждый файл заголовка?
Допустим у меня есть std::vector
of std::string
s.
// Foo.h
class Foo {
std::vector< std::string > mVectorOfFiles;
}
тогда я использовал typedef
сделать StringVector
тип.
// Foo.h
typedef std::vector< std::string > StringVector;
class Foo {
StringVector mVectorOfFiles;
}
если у меня есть другой класс, который принимает
3 ответов
все файлы #include "Foo.h"
вы получаете typedef
. Так что нет, ты не есть чтобы реплицировать его в каждом файле (если он включает Foo.h
. Вы можете разместить typedef
в специальный файл, если это соответствует вашим потребностям. В вашем случае это имело бы смысл и было бы улучшением, потому что Bar.h
не следует полагаться на то, что Foo.h
имеет typedef
и необходимо включает в себя.
Я бы оставил его простым и ограничил его одним типом, хотя, чтобы быть включенным во все файлы типа:
// StringVector.h
#ifndef STRINGVECTOR_H_
#define STRINGVECTOR_H_
#include <vector>
#include <string>
typedef std::vector< std::string > StringVector;
#endif
конечно, нет, вам не нужно typedef во всех файлах заголовков, просто сделайте это в любом файле заголовка, который включен в остальные исходные файлы.
вместо этого создайте класс.
class Files {
};
тогда вы можете использовать прямое объявление везде, где это необходимо;
class Files;
вы инкапсулируете поведение, соответствующее файлам.