数据“未在此范围内声明的成员”

Posted

技术标签:

【中文标题】数据“未在此范围内声明的成员”【英文标题】:Data "member not declared in this scope" 【发布时间】:2015-03-23 08:09:08 【问题描述】:

我正在尝试创建一个存储对象的向量。我已作为私有数据成员添加到类的头文件中。

我正在尝试将此向量初始化为空(以便稍后在程序中向其添加对象),但是当我编译此程序进行测试时,返回此错误:

...错误:“_bookingVector”未在此范围内声明|

我认为问题在于我的默认构造函数上的初始化列表(_bookingVector 显然是向量):

Schedule::Schedule() : _bookingVector()
 

我的语法错了吗?还是向量的初始化方式不同?

这是我的代码:

Schedule.h

#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

Schedule.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::Schedule() 而不是AddBooking() 下面几行吗?应该是Schedule::AddBooking() 是的,完全忽略了这一点,谢谢! 【参考方案1】:

问题不在于构造函数,如果不需要,它看起来很好1。问题是您已将 AddBookingDisplayDebug 定义为非成员函数,但它们应该是成员才能访问该类的其他成员。

将定义修改为在Schedule 类的范围内:

void Schedule::AddBooking(int bday, int btime, int btrainer, int bid)  ...
     ^^^^^^^^^^

void Schedule::DisplayDebug() ...
     ^^^^^^^^^^

另外,不要在头文件中说using namespace std(我会更进一步说不要在任何地方说它,但在这方面并没有普遍的共识。)


1 你的默认构造函数不会做任何编译器生成的不会做的事情。您可以安全地删除它。

【讨论】:

非常感谢!我觉得自己像个白痴哈哈。从 C# 到 C++,所以我需要时间来调整。

以上是关于数据“未在此范围内声明的成员”的主要内容,如果未能解决你的问题,请参考以下文章

将两个数据范围合并为一个范围(Google Drive Excel)

C语言各个数据类型取值范围

1、啥是数值的范围?列出的数据类型各自的范围是多少?C语言

C语言各个数据类型取值范围

存储整数范围的数据结构,查询范围并修改范围

使用范围外范围内的数据