这是使用void*成员指针的正确方法吗?

lie*_*est 1 c++

我可以使用像这样的doSomething方法; 首先将指向A类的指针分配给b的void*成员?

class A
{
    public:
        A(int);
        int m_x;
        int doSomething(){};
};

class B
{
    public:
        void* m_y;
};

#include "x.h"
using namespace std;

A::A(int x)
{
    m_x = x;
}

int main()
{
    //create 2 pointers to A and B
    B *b;
    A *a;

    b = new B();
    a = new A(15);

    b->m_y =  a;        

    ((A*)b->m_y)->doSomething();

    delete a;
    delete b;

   return 0;
}
Run Code Online (Sandbox Code Playgroud)

Nim*_*Nim 5

保持距离 void*

为什么不能有一个指针AB(或者甚至B拥有的实例A),或者B持有智能指针的实例A-有许多其他更好的做事方法.

  • 我不控制B的类定义,这就是为什么我不能使用指向A或智能指针的指针. (2认同)