clangとVC++でうまくコンパイルして警告を出すコードに対してgccの警告が表示されているので、gcc固有のものだと思います。これはコードです:-WSubobject-linkageの警告を修正するにはどうすればよいですか?
namespace myns {
using TokenList = std::vector<size_t>;
using RuleList = std::vector<size_t>;
using RulePathPair = std::pair<size_t, TokenList>;
using CandidatesCollection = struct { std::map<size_t, TokenList> tokens; std::set<RulePathPair> rules; };
class A {
private:
CandidatesCollection _candidates;
};
} // namespace myns
と警告がある:
警告: 'myns :: Aは' フィールド "mynsを:: A :: _候補者の持っているそのタイプなしリンケージ[を持っていません - Wsubobject-linkage]
これはどういう意味ですか、警告を取り除く方法は?
質問と問題とは関係ありませんが、構造体の型名を定義するのに 'using'を使用しているのはなぜですか?構造名は型名そのものです。それが間違っていると言っているわけではなく、ちょうどそれが奇妙です。 :) –
私は同じ考えをしていましたが、そこにパターンを残したかったのです。私は他のこのような定義をいくつか持っており、この表現のようです。 –
古いC型typedef構造体のパターンを思い出しました – RyanP