繁体   English   中英

C ++构造函数并将变量传递给另一个类

[英]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 ++书籍指南和清单

并熟悉基础知识。 您的问题表明,您现在对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类的对象时,它与ABA另一个对象毫无关系。 jk的份额自己的私人情况int i (前提是你解决(A)),如果你想拥有k的的情况下i是相等的j ,你可以如实现一个拷贝构造函数或一对getter / setter函数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM