Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ c+中未声明的标识符(错误C2065)+;_C++_Visual Studio 2008 - Fatal编程技术网

C++ c+中未声明的标识符(错误C2065)+;

C++ c+中未声明的标识符(错误C2065)+;,c++,visual-studio-2008,C++,Visual Studio 2008,我正在实现一个头文件“IVideoPlayer.h”,并创建了一个抽象类“IVideoPlayer” 其功能在文件“VideoPlayer.cpp”中定义 为什么编译器将其显示为未声明的标识符? 任何帮助都可以接受。提前感谢您您从未包含任何定义了std命名空间的头文件,因此使用(未定义)命名空间会导致错误。您也不包括任何定义VideoPlayer类的头文件,主要是因为您决定将类定义放在源文件而不是头文件中 以上是前两个错误的原因。由于第二个错误(VideoPlayer未定义),其余错误为后续错误

我正在实现一个头文件“IVideoPlayer.h”,并创建了一个抽象类“IVideoPlayer”

其功能在文件“VideoPlayer.cpp”中定义

为什么编译器将其显示为未声明的标识符?
任何帮助都可以接受。提前感谢您

您从未包含任何定义了
std
命名空间的头文件,因此
使用
(未定义)命名空间会导致错误。您也不包括任何定义
VideoPlayer
类的头文件,主要是因为您决定将类定义放在源文件而不是头文件中

以上是前两个错误的原因。由于第二个错误(
VideoPlayer
未定义),其余错误为后续错误



您需要在放置
VideoPlayer
类定义的位置创建一个头文件,这与
IVideoPlayer
类的头文件非常相似。您将
VideoPlayer
成员函数的实现放在源文件中。然后将头文件包含在需要
VideoPlayer
类的源文件中。

您从未包含任何定义
std
命名空间的头文件,因此
使用
会导致(未定义)命名空间出错。您也不包括任何定义
VideoPlayer
类的头文件,主要是因为您决定将类定义放在源文件而不是头文件中

以上是前两个错误的原因。由于第二个错误(
VideoPlayer
未定义),其余错误为后续错误


您需要在放置
VideoPlayer
类定义的位置创建一个头文件,这与
IVideoPlayer
类的头文件非常相似。您将
VideoPlayer
成员函数的实现放在源文件中。然后将头文件包含在源文件中,您需要使用
VideoPlayer
类。

您需要在顶部添加#include。 “std”命名空间在iostream库中定义。 您还需要在主cpp文件中向前声明“Video Player”类。

您需要在顶部添加#include。 “std”命名空间在iostream库中定义。
您还需要在主cpp文件中对“Video Player”类进行转发声明。

程序中没有名称std的定义,因为您不使用任何包含名称空间std定义的标准标头。 至少改变这个指令

#include <stdio.h>
#包括

#包括

此外,您还必须将类“VideoPlayer”的定义放在标题中,并将此标题包含在模块示例中。cpp

程序中没有名称std的定义,因为您不使用任何包含名称std定义的标准标题。
#include "stdafx.h"
#include "IVideoPlayer.h"
#include <stdio.h>
#include <conio.h>



int main(void)
{
VideoPlayer h;
h.Load("G:\hila.wmv");
getch();
return 0;
}
至少改变这个指令

#include <stdio.h>
#包括

#包括

您还必须将类“VideoPlayer”的定义放在标题中,并将此标题包含在模块示例中。cpp

为什么要使用命名空间std编写
如果你甚至不使用C++库中的东西?同样,一般情况下也不应该这样做!添加#include“resource.h”为什么要使用名称空间std编写
如果你甚至不使用C++库中的东西?同样,一般情况下也不应该这样做!添加#include“resource.h”这以何种方式回答OP的问题?为什么只为了允许不需要的using指令而包含一个不需要的标题,而该指令本来就不应该存在?@MikeSeymour:也许你是对的。如果我们没有使用“std”名称空间提供的任何功能,那么它就不是reqd。但是最好让开发人员知道导致错误的缺失链接是什么。在本例中,头文件包含是缺少的链接,至少我最初是这么想的。:)如果要创建对象,需要的不仅仅是转发声明。
VideoPlayer
的定义需要移动到标题中。@MikeSeymour:是的,对!!。我的错误。谢谢你纠正我。这以哪种方式回答了OP的问题?为什么你会包括一个不需要的标题,只是为了允许一个不需要的using指令,而这个指令本来就不应该存在?@MikeSeymour:也许你是对的。如果我们没有使用“std”名称空间提供的任何功能,那么它就不是reqd。但是最好让开发人员知道导致错误的缺失链接是什么。在本例中,头文件包含是缺少的链接,至少我最初是这么想的。:)如果要创建对象,需要的不仅仅是转发声明。
VideoPlayer
的定义需要移动到标题中。@MikeSeymour:是的,对!!。我的错误。谢谢你纠正我。谢谢你的建议。我删除了名称空间,第一个错误消失了。但编译器仍然显示铰孔错误。是因为头文件名和相关源文件名不同吗?@user3615925:不是,这是因为您在源文件中定义了
VideoPlayer
,而不是头文件,所以它在其他源文件中不可用。您需要将类定义移动到标题中,并从
main.cpp
中包含该类定义。谢谢您的建议。我删除了名称空间,第一个错误消失了。但编译器仍然显示铰孔错误。是因为头文件名和相关源文件名不同吗?@user3615925:不是,这是因为您在源文件中定义了
VideoPlayer
,而不是头文件,所以它在其他源文件中不可用。您需要将类定义移动到标题中,并从
main.cpp
中包含该标题。
#include "stdafx.h"
#include "IVideoPlayer.h"
#include <stdio.h>
#include <conio.h>



int main(void)
{
VideoPlayer h;
h.Load("G:\hila.wmv");
getch();
return 0;
}
#include <stdio.h>
#include <cstdio>