变量未在此范围内声明

时间:2013-10-04 21:12:19

标签: c++

我正在为类创建一个程序,并且由于某种原因,它在类定义中声明时给出了这个错误。

  

错误:在函数'void setMessageBuffer(std::string)'中   错误:'message'未在此范围内声明。

class apple
{
     private:
         string message, message2;

     public:
         void setMessageBuffer(string);
};

void apple::setMessageBuffer(string messagebuff)
{
     message = messagebuff;
}

我已经完成了这个程序的其他部分并且它们工作正常,但由于某些原因,这部分似乎不想编译。

3 个答案:

答案 0 :(得分:3)

我认为您的代码的其他部分有问题,例如,您是否包含string?和using namespace std;

以下代码可以由GCC编译而没有任何问题

#include <string>
using namespace std;
class apple
{
    private:
        string message, message2;

    public:
        void setMessageBuffer(string);
};

void apple::setMessageBuffer(string messagebuff)
{
    message = messagebuff;
}

int main()
{
}

答案 1 :(得分:3)

您忘记将apple::放在方法名称前面。您的错误消息告诉我这个!

error: in function 'void setMessageBuffer(std::string)'
error: 'message' was not declared in this scope.

与之对比:

template.cpp: In member function ‘void apple::setMessageBuffer(std::string)’:
template.cpp:14:7: error: ‘another variable’ was not declared in this scope

(道歉,如果我在这里错了,也许这就是我的编译器的行为方式,g ++ - 4.6)

答案 2 :(得分:2)

错误消息和代码不一致:编译生成错误消息的代码在apple::前面缺少setMessageBuffer():如果函数不是成员函数,则无法访问apple的成员。代码为已发布的编译,假设它前面有两行

#include <string>
using namespace std;

(或者,我认为最好不要将这两行中的第二行和string的所有用法加上std::作为前缀。)