[英]C++ constructor and passing variables to another class
好吧,这是类中的新内容,并尝试创建一个简单的程序,该程序具有2个类。 A类和B类。好吧,我试图在A类的构造函数中初始化我的变量,然后执行一些操作并将其传递给B类,在这里我也可以执行一些操作。 因此,A类是基类。 但是,当我编译程序时,我遇到两个错误-
错误:在此范围内未声明“ i”
对于A类和B类。所以我有两个问题:1)为什么构造函数不声明变量(根据首先被称为书籍的构造函数)? 2)我可以通过什么方式将变量从A类转移到B类中使用?
#include <iostream>
#include <cstdio>
using namespace std;
class A {
public:
A(){
int i =1;
}
~A(){}
int foo () {
int p = i+1;
i++;
return p;
}
};
class B : public A {
public:
int showme() {
return i;
}
};
int main() {
A j;
B k;
cout<< k.showme()<<endl;
cout<< j.foo()<<endl;
return 0;
}
首先,获得一本好书:
并熟悉基础知识。 您的问题表明,您现在对C ++的了解完全是一团糟。
现在到实际的Q。
1)C-tor不声明类成员变量,因为c-tor也是函数,所以只能声明局部变量。 您需要像这样明确声明成员变量:
class A {
int i;
public:
A(int _i): i(_i) { }
};
2)术语“转移”本身是错误的。 在这种情况下,这两个类处于继承层次结构中,因此变量i
由类B
继承,并且如果您将其声明为protected
,则可以按您的方式访问它。 函数B::showme()
的定义正确。 修复第一部分,该示例将起作用。
3) 不要混淆类和对象 。 当声明了A
类的对象时,它与A
或B
类A
另一个对象毫无关系。 j
和k
的份额自己的私人情况int i
(前提是你解决(A)),如果你想拥有k
的的情况下i
是相等的j
,你可以如实现一个拷贝构造函数或一对getter / setter函数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.