我正在为类创建一个程序,并且由于某种原因,它在类定义中声明时给出了这个错误。
错误:在函数
'void setMessageBuffer(std::string)'
中 错误:'message'
未在此范围内声明。
class apple
{
private:
string message, message2;
public:
void setMessageBuffer(string);
};
void apple::setMessageBuffer(string messagebuff)
{
message = messagebuff;
}
我已经完成了这个程序的其他部分并且它们工作正常,但由于某些原因,这部分似乎不想编译。
答案 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::
作为前缀。)