注意:请停止downvoting ...我尝试了很多,但它只是一个我找不到的错字.
我有一个Node具有某些方法和变量的类.我试图int state从两个方法访问变量,即void setState()和int getState(void).第一种方法是能够设置值,state但第二种方法(即int getState(void))给出错误.
Node.h
class Node{
private:
vector<Wire*> inputs;
vector<Wire*> outputs;
int state;
public:
void addOutput(Wire *a);
void addInput(Wire *a);
Node* getInput(unsigned int i);
Node* getOutput(unsigned int i);
void setState(int st);
int getState(void);
};
Run Code Online (Sandbox Code Playgroud)
main()
int main(int argc, char *argv[])
{
Node* b=new Node(INPUT, "B");
Node* a=new Node(INPUT, "A");
Node* Cin=new Node(INPUT, "Cin");
Node* d=new Node(XOR, "D");
Wire* w=new Wire(a,d);
d->addInput(w);
a->addOutput(w);
vector<Node*> inputs;
vector<Node*> outputs;
for(int i=0;i<5;i++) {
for(unsigned int j=0;j<inputs.size();j++) {
inputs[j]->setState(rand()%2);
cout << inputs[j]->getState(); // THIS LINE IS GIVING THE ERROR
}
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
node.cpp
void Node::addInput(Wire *a)
{
inputs.push_back(a);
}
void Node::addOutput(Wire *a)
{
outputs.push_back(a);
}
string Node::getName()
{
return name;
}
void Node::setState(int st)
{
state = st;
cout<<"\nState set to: "<<state;
}
int getState(void)
{
//return 0;
return state;
}
Run Code Online (Sandbox Code Playgroud)
错误:错误:未在此范围内声明"state"
一个简单的拼写错误:
int Node::getState(void)
{
//return 0;
return state;
}
Run Code Online (Sandbox Code Playgroud)
会解决它.(成员变量state只能在Node类的方法中进行评估).您当前正在int getState()全局命名空间中定义一个函数,在您尝试引用类数据成员之前,该函数是完全合法的.这就是编译错误有点神秘的原因.
| 归档时间: |
|
| 查看次数: |
59 次 |
| 最近记录: |