2016-08-14 16 views
1

私はインターフェイスを実装するクラスを持つ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とコンパイラの両方を幸せにする方法を教えてください。

+0

intellisenseを幸せにすることが優先されるべきではありません。あなたのベストチャンスは、Microsoftがそれを修正するための次の更新を更新するか、待つことです(そして、何かを壊さないことを願っています)。 – nwp

+0

ああ、それは私が書き留めておくべきintellisenseのバグですか? – ZachB

+0

Intellisenseは時折赤い塊を完全に細かいコードの下に置くことが知られています。あなたのソリューションを右クリックし、 "ソリューションを再スキャン"を選択すると、squiggliesを追加する前にIntelliSenseをより強く思考させることができます。 – nwp

答えて

0

ユーザnwpが正しい:コンテキストメニューのオプション「ソリューションを再スキャンする」がこのトリックを行います。注意すべき点は、このオプションは、ソリューションのコンテキストメニューではなく、プロジェクトのコンテキストメニューに属していることです。私のWindows 10コンピュータ上のVisual Studio 2015には少なくとも当てはまります。

関連する問題