【发布时间】:2016-12-21 00:58:34
【问题描述】:
我有一个 ATL 项目,其中有一个实现接口的类(使用 VS 中的“实现接口”快捷方式生成)。自动生成的 stdafx.h 包含:
#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 {
...
按原样,intellisense 抱怨 IBaseClient “不是类或结构名称”,但它编译得很好。
如果我添加 using namespace IBase 或完全限定基类名称 (IBase::IBaseClient),那么智能感知错误就会消失,但编译器会显示“IBase:具有此名称的命名空间不存在”并且无法编译。
如何让 IntelliSense 和编译器都满意?
【问题讨论】:
-
让智能感知快乐不应该是高优先级。你最好的机会是更新或等待微软的下一个更新来修复它(并希望他们没有破坏其他东西)。
-
啊,所以这只是我应该注销的智能感知错误?
-
众所周知,Intellisense 偶尔会将红色波浪线置于完美的代码之下。您可以尝试右键单击您的解决方案并选择“重新扫描解决方案”以强制智能感知在添加波浪线之前更加努力,但如果它们仍然存在,请忽略它们。
标签: c++ visual-studio visual-c++ intellisense atl