未在范围内声明,即使在.h中声明

时间:2012-06-05 15:34:49

标签: c++ header struct scope

我一直坚持这一点,我的老师甚至不知道发生了什么。如果有人能帮助我,我将不胜感激。

我在Line结构的头文件中声明了item。但是当在Line :: display()方法中调用它时,我得到一个错误,指出该变量未在范围中声明。我向老师和同事们展示过,似乎没有人知道解决方案。

这是我的.h:

//Line.h
#define MAX_CHARS 40
struct Line {
    public:
    bool set(int n, const char* str);
    void display() const;

    private:
    char item[MAX_CHARS];
    int no;
    };

这是我的.cpp文件。

// Line.cpp
#include "Line.h"
#include <iostream>
using namespace std;

#define MAX_CHARS 40

void Line::display() const {
    cout << no << ' ' << item << endl;
}

对此有任何帮助都很棒。提前谢谢。

2 个答案:

答案 0 :(得分:5)

如果这是您的实际代码,您可能会从其他地方获取标头。尝试:

#include "C:\\fullPathToHeader\\Line.h"
#include <iostream>
using namespace std;

void Line::display() const {
    cout << no << ' ' << item << endl;
}

此外:

  • 不要在MAX_CHARS文件中重新定义cpp
  • 使用包含头部的警卫。

答案 1 :(得分:-5)

使Line :: display const意味着您不需要实例变量数据。

// Line.cpp
#include "Line.h"
#include <iostream>
using namespace std;

void Line::display()
{
    cout << no << ' ' << Line::item << endl;
}