一个类的方法不能访问同一个类的int变量

use*_*695 -1 c++

注意:请停止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"

Bat*_*eba 5

一个简单的拼写错误:

int Node::getState(void)
{
    //return 0;
    return state;

}
Run Code Online (Sandbox Code Playgroud)

会解决它.(成员变量state只能在Node类的方法中进行评估).您当前正在int getState()全局命名空间中定义一个函数,在您尝试引用类数据成员之前,该函数是完全合法的.这就是编译错误有点神秘的原因.