一个类的方法可以't访问同一类的int变量
Method of one class can't access the int variable of same class
注意:请停止向下投票。。。我试了很多次,但就是找不到台风。
我有一个类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);
};
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;
}
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;
}
错误:错误:未在此作用域中声明"state"
一个简单的打字错误:
int Node::getState(void)
{
//return 0;
return state;
}
将修复它。(成员变量state
只能在Node
类的方法中进行评估)。您当前正在全局命名空间中定义一个函数int getState()
,在尝试引用类数据成员之前,该函数是完全合法的。这就是为什么编译错误有点神秘的原因。
更改
int getState(void)
至
int Node::getState(void)
前者声明了一个新的自由函数,Node
的成员不直接在其作用域中。
除此之外,您忘记在成员函数getState的定义中指定类名(必须有
int Node::getState(void)
{
//return 0;
return state;
}
)您的代码无效。首先,这个类没有带两个参数的构造函数。因此,编译器应该为类似的语句发出错误
Node* b=new Node(INPUT, "B");
此外,您还试图将下标运算符用于空向量输入(inputs[j]->setState(rand()%2);)
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
}
}
这就是永远不会执行内部循环。
只需指示int getState(void)
属于哪个类别,int Node::getState(){return state;}
相关文章:
- 类成员函数无法访问同一类的私有结构节点?
- 从C 中的另一类访问类成员
- 如何访问结构和枚举成员形成一类
- 如何访问当前工人阶级中另一类的价值
- 无法从类中的其他功能访问同一类的变量
- 访问多个源文件中的同一类实例
- 如何创建一个可以对同一类的多个对象进行操作的函数,访问C++中的私有属性
- 从另一类C 访问对象
- 访问同一类中的私有虚拟函数
- 方法无法访问同一类的成员变量 (C++)
- 访问同一类的其他对象的变量
- 从同一类中的另一个成员对象访问成员对象
- 访问另一类的指针数组的类的成员
- 不允许直接在同一类中访问成员变量
- 如何让一个函数参数接受不同的对象(但属于同一类),并访问传递给w/n函数调用的w/n对象的函数
- 从同一类的专门化模板的静态函数访问类模板成员
- 通过同一类的私有成员访问私有成员变量
- 不能访问同一类的私有成员
- 为什么同一类的对象可以访问彼此的私有数据?
- 静态方法可以访问同一类的私有方法吗?