对象构造函数调用未在此范围内声明
Object Constructor Call Not Declared In This Scope
将我通过将 part_time.h 的 #include 移动到 #include 列表的顶部,自己设法解决了这个问题。为什么这会有所作为,我不知道。
程序拆分为 makefile 后,我在一次手动对象构造调用时遇到问题。每个.cpp都有一个包含的.h,main.cpp也包括每个.h。
相关代码如下。错误是:
main.cpp: 在函数 'void add_part_time((' 中: main.cpp:166:2:错误:"part_time"未在此范围内声明 part_time part_time1(名称、叉车、annual_leave、sick_leave(; ^
主.cpp:166:12:错误:在"part_time1"之前应为";" part_time part_time1(名称、叉车、annual_leave、sick_leave(;
我注意到了一些奇怪的事情。如果我删除 ;在sick_leave定义行之后,我得到的唯一错误是询问缺失的错误;另一个错误消失了。
#include <string>
using namespace std;
class employee
{
public:
static int count;
employee (std::string name);
string name;
~employee();
};
employee::employee (string set_name)
{
name = set_name;
}
employee::~employee()
{
}
class dockhand: public employee
{
public:
dockhand (string set_name, bool set_forklift);
float start_shift;
bool forklift;
float payrate;
~dockhand();
};
dockhand::dockhand (string set_name, bool set_forklift) : employee (set_name)
{
forklift = set_forklift;
start_shift = 4.00;
}
dockhand::~dockhand()
{
}
class part_time: public dockhand
{
public:
part_time (string set_name, bool set_forklift, int annual_leave, int sick_leave);
float end_shift;
int annual_leave;
int sick_leave;
~part_time();
};
part_time::part_time (string set_name, bool set_forklift, int annual_leave, int sick_leave) : dockhand (set_name, set_forklift)
{
end_shift = 8.00;
payrate = 22.00;
}
part_time::~part_time()
{
}
void add_part_time()
{
string name;
bool forklift;
int annual_leave;
int sick_leave;
name = "bob";
forklift = true;
annual_leave = 2;
sick_leave = 3;
part_time part_time1(name, forklift, annual_leave, sick_leave);
}
然而,完全相同的格式在下面与另一个类一起编译得很好。
void add_casual()
{
string name;
bool forklift;
name = "bob";
forklift = true;
casual casual1(name, forklift);
}
我被困在问题所在。注释掉构造行使其编译,因此它肯定是那里的东西。
编辑 将part_time part_time1(名称、叉车、annual_leave、sick_leave(行更改为临时构造函数调用,使其可以使用生成文件进行编译。因此,即使包含是正确的,该特定行仍然存在问题。
我通过将 part_time.h 的 #include 移动到 #include 列表的顶部,自己设法解决了这个问题。绝对没有其他改变。为什么这会有所作为,我不知道。
- 错误:未在此范围内声明'reverse'
- 错误:"imread"未在此范围内声明
- 未在此范围内声明错误 'xy'
- Socklen_t未在此范围内声明
- 错误:'[' 之前预期的非限定 id 和错误:'users'未在此范围内声明
- "Main"已在当前范围内声明
- c++ 变量在宏的扩展中没有在这个范围内声明
- C++ 在编译过程中 strtok 函数 Eclipse 说没有在范围内声明?
- 'num1'未在此范围内声明
- 如何找到在本地范围内声明的变量的地址?
- NT状态未在此范围内声明
- 变量未在此范围内声明 数组线性搜索
- 包含文件中的 Typdef "未在此范围内声明"
- 'ClassName'和'ClassInstance'未在此范围内声明
- C++ 中的类之间的数据重新循环 - 错误:'<class name>'未在此范围内声明
- 代码作为 C 文件工作,但不作为C++文件,错误:'__builtin_types_compatible_p'未在此范围内声明
- 如何修复错误:"vreinterpretq_u32_f64"未在此范围内声明 - 在Android上使用Eigen构建
- 如何修复C++中的"arrStud未在此范围内声明"错误
- 错误:"SHGetKnownFolderPath"未在此范围内声明
- 错误:'Sprite'未在此范围内声明