gpt4 book ai didi

c++ - 我必须对每个头文件进行 typedef 吗?

转载 作者:可可西里 更新时间:2023-11-01 18:16:13 28 4
gpt4 key购买 nike

假设我有一个 std::vectorstd::string

// Foo.h
class Foo {
std::vector< std::string > mVectorOfFiles;
}

然后我用了typedef使其成为 StringVector类型。

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

class Foo {
StringVector mVectorOfFiles;
}

如果我有另一个需要 StringVector 的类(class)对象...

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

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

// 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++ - 我必须对每个头文件进行 typedef 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14394610/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com