我通过书本学习 C++ 和 COM。在 IDE MS Visual Studio 2012 中,我创建了新的空 C++ 项目,并向其中添加了一些现有文件。我的 CPP 文件包含 #include<iostream>
行,但在编辑器中我收到了这样的消息:
错误:标识符“cout”未定义
结尾
错误:标识符“endl”未定义
代码:
#include<iostream>
#include"interfaces.h" // unknown.h, objbase.h, initguid.h
class CA {//: public IX, IY{
public:
// Constructor
CA();
// Destructor
~CA();
// IUnknown
virtual HRESULT __stdcall QueryInterface(const IID& iid, void** ppv);
virtual ULONG __stdcall AddRef();
virtual ULONG __stdcall Release();
// IX
virtual void __stdcall Fx1();
virtual void __stdcall Fx2();
// IY
virtual void __stdcall Fy1(){ cout << "Fy1" << endl; } // errors here
virtual void __stdcall Fy2(){ cout << "Fy2" << endl; } // errors here also
private:
long counter;
};
为什么会发生?
原文由 Andrey Bushman 发布,翻译遵循 CC BY-SA 4.0 许可协议
您需要指定
std::
命名空间:或者,您可以使用
using
指令:我应该补充一点,您应该避免在标头中使用这些
using
指令,因为包含这些的代码也会将符号带入全局命名空间。将 using 指令限制在小范围内,例如这里,
using
指令仅适用于foo()
的范围。