Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/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++;类实例化?_C++_Pointers_Arduino - Fatal编程技术网

C++ 在这个失败的C++;类实例化?

C++ 在这个失败的C++;类实例化?,c++,pointers,arduino,C++,Pointers,Arduino,我正在为基于Arduino的退休倒计时时钟(给同事的礼物)编写代码,并将一些代码分组到一个简单的类中。当我在当前(1.6.7)Arduino IDE中编译时,这段代码给了我一个错误“error:'rd'未命名类型”: #include "RetirementDisplay.h" RetirementDisplay* rd; rd = new RetirementDisplay(&update_lcd); 奇怪的是,这段代码编译时没有出错: #include "RetirementDis

我正在为基于Arduino的退休倒计时时钟(给同事的礼物)编写代码,并将一些代码分组到一个简单的类中。当我在当前(1.6.7)Arduino IDE中编译时,这段代码给了我一个错误“error:'rd'未命名类型”:

#include "RetirementDisplay.h"
RetirementDisplay* rd;
rd = new RetirementDisplay(&update_lcd);
奇怪的是,这段代码编译时没有出错:

#include "RetirementDisplay.h"
RetirementDisplay* rd = new RetirementDisplay(&update_lcd);
但是,当我尝试使用新创建的rd对象的成员函数(如
rd->add_screen()
)时,我得到了相同的“rd不定义类型”错误,这对我来说是完全不合逻辑的。但是我的C++是非常生锈的,所以我想这里可能有一些我忽略的东西。 update_lcd方法是在同一个文件的前面定义的,它使用了两个字符串参数,所以我认为它不会对此感到不安

RetirementDisplay.h的内容同样简单;它只是一个链表和两个方便的函数,可以将相关功能捆绑在一起,同时跟踪当前应该激活的“屏幕”(只有两种printf格式)。不要根据我粗略的命名惯例来评判我;这应该是一个快速的项目


这一行看起来像是一个赋值语句:

rd = new RetirementDisplay(&update_lcd);
但语句必须位于函数内部,如下所示:

#include "RetirementDisplay.h"

void myfunction()
{
    RetirementDisplay* rd;
    rd = new RetirementDisplay(&update_lcd);
}
但是,变量声明可以在函数之外,所以这就是为什么在这一行中不会出现错误的原因:

RetirementDisplay* rd = new RetirementDisplay(&update_lcd);

这一行看起来像是一个赋值语句:

rd = new RetirementDisplay(&update_lcd);
但语句必须位于函数内部,如下所示:

#include "RetirementDisplay.h"

void myfunction()
{
    RetirementDisplay* rd;
    rd = new RetirementDisplay(&update_lcd);
}
但是,变量声明可以在函数之外,所以这就是为什么在这一行中不会出现错误的原因:

RetirementDisplay* rd = new RetirementDisplay(&update_lcd);

任何特殊原因
add_screen
在标题中有一个下划线,在您尝试使用它时有两个下划线?你能给出一个完整的文件,当你试图使用它时,它会崩溃吗?你不能在文件范围内有语句。只有声明可以出现在那里;语句必须在函数中<代码>rd=新的退休显示器(&update_lcd)是一条语句<代码>RetirementDisplay*rd=新的RetirementDisplay(&update_lcd)是带有初始值设定项的声明。两个下划线,因为我今天工作了13个小时,而且我的打字手指有点粗糙。:)已修复。是否有任何特定原因
add_screen
在标题中有一个下划线,在您尝试使用它时有两个下划线?你能给出一个完整的文件,当你试图使用它时,它会崩溃吗?你不能在文件范围内有语句。只有声明可以出现在那里;语句必须在函数中<代码>rd=新的退休显示器(&update_lcd)是一条语句<代码>RetirementDisplay*rd=新的RetirementDisplay(&update_lcd)是带有初始值设定项的声明。两个下划线,因为我今天工作了13个小时,而且我的打字手指有点粗糙。:)修好了,好的,就这样。我陷入了在setup()方法之外不进行初始化的陷阱,而在Arduino环境中应该这样做。Thamks.)好的,就这样。我陷入了在setup()方法之外不进行初始化的陷阱,而在Arduino环境中应该这样做。Thamks.)