在c ++中是否有可能指向不同类型的指针数组?

Som*_*ser 6 c++ arrays pointers

在c ++中是否有可能指向不同类型的指针数组?请举例)

RC.*_*RC. 15

通常,如果您希望拥有不同"类型"指针的集合,则可以通过它们派生出基类/接口并存储指向该基类的指针来实现它.然后通过多态,你可以让它们表现为不同的类型.

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

class A : public Base
{
    void doSomething() { cout << "A\n"; } 
};

class B : public Base
{
    void doSomething() { cout << "B\n"; } 
};

std::vector<Base*> pointers;
pointers.push_back(new A);
pointers.push_back(new B);
Run Code Online (Sandbox Code Playgroud)


Jer*_*fin 8

已经提到了一系列指向void的指针.如果你想让它变得实用和有用,可以考虑使用boost :: any的数组(或更好的矢量).


stu*_*stu 7

C++是C的东西更多.因此,如果您想以C方式执行,如上所述,您只需创建一个void指针数组

void *ary[10];
ary[0] = new int();
ary[1] = new float();

DA.

如果您希望以面向对象的方式执行操作,那么您希望使用集合,并将要添加到集合中的所有内容派生自可添加到集合的相同基础对象类.在java中,这是"对象",C++没有内置的基础对象,但是你使用的任何集合库都有你可以子类化的东西.