C++ “数据”;未在此范围内声明的成员”;
我试图创建一个向量来存储对象。我已将其作为私有数据成员添加到类的头文件中 我试图将此向量初始化为空(以便稍后在程序中向其添加对象),但当我编译此程序进行测试时,返回此错误: …错误:“\u bookingVector”未在此作用域中声明| 我认为问题在于默认构造函数上的初始化列表(显然,bookingVector就是向量): 我的语法错了吗?或者向量的初始化方式不同 这是我的密码: 附表hC++ “数据”;未在此范围内声明的成员”;,c++,vector,initializer-list,C++,Vector,Initializer List,我试图创建一个向量来存储对象。我已将其作为私有数据成员添加到类的头文件中 我试图将此向量初始化为空(以便稍后在程序中向其添加对象),但当我编译此程序进行测试时,返回此错误: …错误:“\u bookingVector”未在此作用域中声明| 我认为问题在于默认构造函数上的初始化列表(显然,bookingVector就是向量): 我的语法错了吗?或者向量的初始化方式不同 这是我的密码: 附表h #ifndef SCHEDULE_H #define SCHEDULE_H #include "Booki
#ifndef SCHEDULE_H
#define SCHEDULE_H
#include "Booking.h"
#include <vector>
using namespace std;
class Schedule
{
public:
Schedule();
void AddBooking(int bday, int btime, int btrainer, int bid);
void RemoveBooking(int bday, int btime);
void DisplaySchedule();
void DisplayAvailableTimeSlots();
//For Testing
void DisplayDebug();
private:
vector<Booking> _bookingVector;
};
#endif // SCHEDULE_H
#如果没有计划#
#定义时间表
#包括“Booking.h”
#包括
使用名称空间std;
课程表
{
公众:
附表();
无效添加预订(int B日期、int B时间、int B联系人、int bid);
作废删除预订(int B日期,int B时间);
作废附表();
void DisplayAvailableTimeSlots();
//用于测试
void DisplayDebug();
私人:
向量_bookingVector;
};
#endif//附表H
附表1.cpp
#include "Schedule.h"
#include "Booking.h"
#include <vector>
#include <iostream>
Schedule::Schedule() : _bookingVector()
{ }
void AddBooking(int bday, int btime, int btrainer, int bid){
Booking bookingObject(bday, btime, btrainer, bid);
_bookingVector.push_back(bookingObject);
}
void DisplayDebug(){
for(int i = 0; i < _bookingVector.size(); ++i){
cout << _bookingVecotr[i] << endl;
}
}
#包括“Schedule.h”
#包括“Booking.h”
#包括
#包括
Schedule::Schedule():_bookingVector()
{ }
无效添加预订(int B日期、int B时间、int B联系人、int bid){
预订对象(b天、b时间、b列车员、投标);
_bookingVector.向后推(bookingObject);
}
void DisplayDebug(){
对于(int i=0;i<_bookingVector.size();++i){
cout问题不在于构造器,构造器看起来没有必要1。问题在于您已将AddBooking
和DisplayDebug
定义为非成员函数,但这些函数应该是成员,以便访问类的其他成员
修改计划
类范围内的定义,从而:
void Schedule::AddBooking(int bday, int btime, int btrainer, int bid) { ...
^^^^^^^^^^
void Schedule::DisplayDebug(){ ...
^^^^^^^^^^
另外,不要在头文件中使用名称空间std说(我会更进一步说,不要在任何地方说它,但在这一点上没有普遍的一致意见)
1您的默认构造函数不会执行编译器生成的构造函数不会执行的任何操作。您可以安全地将其删除。是否确定错误不是关于Schedule::Schedule()
而不是AddBooking()
下面几行?它可能是Schedule::AddBooking())是的,完全忽略了这个,谢谢!非常感谢!我感觉自己像个白痴。哈哈,从C语言来C++,所以我需要时间来调整。
void Schedule::AddBooking(int bday, int btime, int btrainer, int bid) { ...
^^^^^^^^^^
void Schedule::DisplayDebug(){ ...
^^^^^^^^^^