繁体   English   中英

变量未在此范围内声明

[英]variable not declared in this scope

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

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

class apple
{
     private:
         string message, message2;

     public:
         void setMessageBuffer(string);
};

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

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

我认为代码的其他部分有问题,例如,你是否包含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()
{
}

你忘了把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)

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

#include <string>
using namespace std;

(或者,在我看来,最好不要使用这两行中的第二行,并且所有string使用都以std::为前缀)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM