C++/Qt プロジェクトで高度な C++11 機能を使用する場合、QtCreator にはコード モデルにいくつかの問題があります。私の場合: 次のようにテンプレート化されたエイリアス:
template<class T> using Ptr = QSharedPointer<T>;
QSharedPointer<SomeClass> myPtr = ...;
myPtr->... // will complete
Ptr<SomeClass> myPtr = ...; // not even parsed as a type...
myPtr->... // won't complete
そこで、QtCreator がファイルを解析するときにPtr
自分の定義をマクロ ハッキングすることを考えましたが、もちろん、コンパイラがファイルを解析するときはテンプレート化された素敵なエイリアス構文を使用します。何かのようなもの:
#ifdef QT_CREATOR
# define Ptr QSharedPointer
#else
template<class T> using Ptr = QSharedPointer<T>;
#endif
QtCreatorはコードモデルでそれらを使用するのに十分スマートであるため、を使用して.proファイルにマクロ定義を配置しても機能しDEFINES += -D...
ません(もちろん、これは素晴らしいことです)。また、QMAKE_CXXFLAGS += -D...
正しく解析されています (悲しいことに)。
QtCreator にマクロが定義されているが (コンパイラの場合) マクロが定義されていない (またはその逆) ことを「だます」にはどうすればよいですか?
PS: 私は最新バージョン (2.7) を使用しており、2.6 も試しました。