C ++中的数组类:如何在另一个中使用一种方法

时间:2010-01-31 10:07:30

标签: c++

我有一个用于执行各种数组操作的类。我喜欢在我的populate方法中使用我的insert方法。 有人可以指导我吗?这是代码:

#include <iostream>
#include <cstdlib>
using namespace std;

const int MAX=5;

class array
{
private:
    int arr[MAX];

public:
    void insert(int pos, int num);
    void populate(int[]);
    void del(int pos);
    void reverse();
    void display();
    void search(int num);
};

void array::populate(int a[])
{
    for (int i=0;i<MAX;i++)
    {
        arr[i]=a[i];
    }
}

void array::insert(int pos, int num)
{
    for (int i=MAX-1;i>=pos;i--)
    {
         arr[i] = arr[i-1];
         arr[i]=num;
    }
}


void array::del(int pos)
{
    for (int i=pos;i<MAX;i++)
    {
        arr[pos]=arr[pos + 1];
    }
}

void array::display()
{
    for (int i=0;i<MAX;i++)
        cout<<arr[i];
}


void array::search(int num)
{
    for (int i=0;i<MAX;i++)
    {
        if (arr[i]==num)
        {
            cout<<"\n"<<num<<" found at index "<<i;
            break;
        }
        if (i==MAX)
        {
            cout<<num <<" does not exist!";
        }
    }
}

int main()
{
    array a;

    for (int j=0;j<MAX;j++)
    {
        a.insert(j,j);
    }

    a.populate(a);

    a.insert(2,7);

    a.display();

    a.search(44);

    system("pause");
}

2 个答案:

答案 0 :(得分:3)

  

我喜欢在我的插图中使用我的插入方法   填充方法。有人可以指导我   那个?

这意味着,不是直接而有效的“从一个数组复制到另一个数组”方法,而是使用正确的索引代替赋值,为输入的每个值调用insert。

从方法内部调用当前实例上的方法:

insert(x, y);
//or
this->insert(x, y);

您的代码也包含错误,因为您传递了错误的类型以填充main。它期望int*(一个真正的数组),而不是array对象。

答案 1 :(得分:2)

请详细说明您的问题。如果您只需要一个好的容器,请查看STL(标准模板库)std :: vector。它是C ++标准的一部分,随编译器一起提供。

如果您想学习如何编写自定义课程,请在您的问题中尝试更精确。

还要考虑网上提供的丰富的初学者教程,例如:

http://www.learncpp.com/

这是一个关于如何编写自定义类的小例子,其中一个成员函数调用另一个成员函数并访问私有数据成员(请注意,在成员函数内部,您可以直接引用任何其他成员):

#include <iostream>

class Example
{
  private:
    int some_private_stuff;

  public:
    Example();
    void function_a();
    void function_b();
};

Example::Example(){
  some_private_stuff = 1;
}


void Example::function_a(){
  std::cout << "this is function a" << std::endl;
  some_private_stuff = 2;
  std::cout << "changed private_stuff to " << some_private_stuff << std::endl;
}

void Example::function_b(){
  std::cout << "this is function b" << std::endl;
  function_a();
}

int main() {
  Example e;
  e.function_b();
  return 0;
}