加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 模板化类继承传递给它们的类的成员吗? (特别是std :: vect

发布时间:2020-12-16 10:50:00 所属栏目:百科 来源:网络整理
导读:我有关于矢量的问题: 如果我有一个std :: vector MyClass这个载体会“继承”MyClass成员函数吗?如果没有,那么在循环中单独处理MyClass成员的最佳方法是什么?我是否必须在每次迭代时创建一个新的类对象并将当前向量迭代器分配给它? class MyClass{ public
我有关于矢量的问题:

如果我有一个std :: vector< MyClass>这个载体会“继承”MyClass成员函数吗?如果没有,那么在循环中单独处理MyClass成员的最佳方法是什么?我是否必须在每次迭代时创建一个新的类对象并将当前向量迭代器分配给它?

class MyClass
{
    public:
        void setMembers(std::string &string,int &num)
        {
            mystring = string;
            number = num;
        }
        string printString() { return mystring; }
        int printNumber() { return number; }

    private:
        std::string mystring;
        int number;
};

    MyClass test;
    std::vector<MyClass> vector;

    std::string string = "Test 1";
    int a = 3;

    test.setMembers(string,a);
    vector.push_back(test);

    for(unsigned int i = 0; i<vector.size(); i++) {
        cout << "Vector #" <<  << endl;
        // does vector inherit member functions here?
        cout << "mystring is: " << vector.printString()<< endl;
        cout << "number is  : " << vector.printNumber() << endl;
    }

非常感谢您的帮助.

解决方法

不,实例std :: vector不会继承您的成员变量.但是,向量中的对象确实具有可以通过operator []访问的成员.

for (size_t i = 0; i < vector.size(); i++) {
    cout << "Vector #" << i << endl;
    cout << "mystring is: " << vector[i].printString() << endl;
    cout << "number is  : " << vector[i].printNumber() << endl;
}

注意我们现在说vector [i],它返回一个MyClass类型的值,它具有成员函数printString()和printNumber().

您应该重新阅读有关继承的章节.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读