私はインターフェイスを実装するクラスを持つATLプロジェクトを持っています(VSの "Implement Interface" )。自動的に生成されたstdafx.hをが含まれていますIntellisenseとコンパイラとの対立: "この名前のネームスペースは存在しません" vs "クラスまたは構造体名ではありません"
#import "C:\path\to\base.dll" raw_interfaces_only, raw_native_types, no_namespace, named_guids, auto_search
私のクラス(CPLUGIN
)インターフェース(IBase::IBaseClient
)を実装:
class ATL_NO_VTABLE CPLUGIN :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CPLUGIN, &CLSID_PLUGIN>,
public IDispatchImpl<IPLUGIN, &IID_IPLUGIN, &LIBID_MyLib, /*wMajor =*/ 1, /*wMinor =*/ 0>,
public IBaseClient {
...
をそのまま、インテリセンスはIBaseClientは、「クラスまたは構造体の名前ではないと文句を言い"しかし、それはうまくコンパイルされます。私はusing namespace IBase
を追加したり、完全にベースクラス名(IBase::IBaseClient
)を修飾する場合
は、その後、インテリセンスエラーが離れて行くが、コンパイラは言う、「IBase
:この名前の名前空間が存在しない」とコンパイルに失敗しました。
IntelliSenseとコンパイラの両方を幸せにする方法を教えてください。
intellisenseを幸せにすることが優先されるべきではありません。あなたのベストチャンスは、Microsoftがそれを修正するための次の更新を更新するか、待つことです(そして、何かを壊さないことを願っています)。 – nwp
ああ、それは私が書き留めておくべきintellisenseのバグですか? – ZachB
Intellisenseは時折赤い塊を完全に細かいコードの下に置くことが知られています。あなたのソリューションを右クリックし、 "ソリューションを再スキャン"を選択すると、squiggliesを追加する前にIntelliSenseをより強く思考させることができます。 – nwp