cpp将对象存储在指针数组中

cpp将对象存储在指针数组中

我正在尝试用c ++做这样的事情。

void showContensofArray(void *data[])
{
      //In this function have to display the values of respective objects.
      //  Any ideas how do I do it?
}
int main(){
    A phew(xxx,abcdefg); //object of class A

    B ball(90),ball2(88);  //object of class B

    void *dataArray[2];
    dataArray[0] = &ph1;
    dataArray[1] = &ball;
    showContentsofArray(dataArray); //function
}

最佳答案

void showContensofArray(void *data[], int len)
{
    int i;
    for(i=0;i<len;i++){
        ((Base*)(data[i]))->print();
    }
}


每个类都应具有方法print()的实现,该方法知道如何打印其值。

您也可以使用继承。

编辑:

@Ricibob的答案是正确的,但是如果您需要在函数内部进行转换,则需要执行以下操作:

#include <iostream>

using namespace std;

class Base{
public:
    virtual void print()=0;
};
class A: public Base{
public:

    void print(){
        cout<<"Object A"<<endl;
    }
};

class B: public Base{
public:
    void print(){
        cout<<"Object B"<<endl;
    }
};

void showContensofArray(void* data[], int len)
{
    int i;
    for(i=0;i<len;i++){
        ((Base*)(data[i]))->print();
    }
}

int main(){
    A a;
    B b;
    void* v[2];
    v[0]= &a;
    v[1] = &b;
    showContensofArray(v,2);
    return 0;
}


您不能回避继承。

关于c++ - cpp将对象存储在指针数组中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16681024/

10-11 16:54