2

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

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

class apple
{
     private:
         string message, message2;

     public:
         void setMessageBuffer(string);
};

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

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

4

3 回答 3

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()
{
}
于 2013-10-04T21:15:07.417 回答
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)

于 2013-10-04T21:18:22.623 回答
2

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

#include <string>
using namespace std;

(或者,在我看来更可取的是,没有这两行中的第二行以及所有使用string前缀的用法std::)。

于 2013-10-04T21:16:46.207 回答