c – 我是否必须在每个Header文件上输入typedef?

前端之家收集整理的这篇文章主要介绍了c – 我是否必须在每个Header文件上输入typedef?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
假设我有一个std :: vector的std :: strings.
// Foo.h
class Foo {
    std::vector< std::string > mVectorOfFiles;
}

然后我使用typedef使它成为StringVector类型.

// Foo.h
typedef std::vector< std::string > StringVector;

class Foo {
    StringVector mVectorOfFiles;
}

如果我有另一个采用StringVector对象的类…

// Bar.h
class Bar {
    Bar( const StringVector & pVectorOfFiles ); // I assume this produces a compile error (?) since Bar has no idea what a StringVector is
}

…我必须在Bar的头文件中再次使用typedef吗?

// Bar.h
typedef std::string< std::vector > StringVector;
class Bar {
    Bar( StringVector pListOfFiles );
}

是否可以放置typedef std :: vector< std :: string> StringVector在一个文件中并且让其他所有类都知道StringVector类型?

解决方法

#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
原文链接:https://www.f2er.com/c/119379.html

猜你在找的C&C++相关文章