いくつかの研究の後で、forward-declareが行うならば、私は#include
私のヘッダファイル内のものを避けるべきであることを発見しました。 std::size_t
を宣言するにはどうすればよいですか?または、私も#include <cstddef>
私のヘッダーファイルにする必要がありますか?フォワードはヘッダ内のstd :: size_tを宣言します
ファイルmy_string.h:
#ifndef MY_STRING_H_
#define MY_STRING_H_
extern std::size_t;
namespace my
{
class string
{
public:
std::size_t length() const { return len; }
const char *c_str() const;
private:
std::size_t len;
}
}
#endif
ファイルmy_string.cpp:
#include "my_string.h"
#include <cstddef>
const char *my::string::c_str() const
{
for (std::size_t i = 0; i < len; ++i)
; // do stuff ...
return something;
}
は明らかにこれらの例は完全ではありません...
私'エラーが発生しました:error: 'size_t' in namespace 'std' does not name a type
(my_string.h
から)。
編集:お返事ありがとうございます。私はこのヘッダーを含めないように強制しようと時間を無駄にしていると思ったが、私は単純なものを見逃していないことを確かめたかった。
'use my_size_t = decltype(sizeof(1));'は移植性があります;)ヘッダーは必要ありません。 – MSalters
@MSaltersこのハックは単に素晴らしいです! :-) :-) :-) – dasblinkenlight