C++内部类

来源:互联网 发布:linux 授权目录给用户 编辑:程序博客网 时间:2024/05/04 13:05
内部类可以访问外部类的private方法。#include <iostream>#include <vector>using namespace std;template <typename T>class MyList {  public:    MyList(vector<T>* list): v_(list) {    }     class Iterator {      public:        Iterator(MyList* plist): plist_(plist) {        }         T* Next(const T& key) {          return plist_->FindGreaterOrEqual(key);        }       private:        MyList * plist_;    };     Iterator GetIterator() {      return Iterator(this);    }   private:    vector<T>* v_;     T* FindGreaterOrEqual(const T& key) {      for (size_t i = 0; i < v_->size(); i++) {        if ( v_->at(i) < key) {        } else {          return &(v_->at(i));        }       }       return NULL;    } };void test() {  int myints[] = {1,2,3,40,50,60,70};  vector<int> va(myints, myints + sizeof(myints)/sizeof(int));  MyList<int> mylist(&va);  int key = 4;  //MyList<int>::Iterator it(&mylist);  MyList<int>::Iterator it = mylist.GetIterator();  int* pa = it.Next(key);  cout << "to find " << key << ", find " << *pa << endl;}int main() {  test();}





0 0
原创粉丝点击