C&C++   发布时间:2019-10-05  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了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

大佬总结

以上是大佬教程为你收集整理的c – 我是否必须在每个Header文件上输入typedef?全部内容,希望文章能够帮你解决c – 我是否必须在每个Header文件上输入typedef?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。