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