Как я могу переместить указатель одного класса в другой в C ++ - PullRequest
0 голосов
/ 08 января 2011

У меня есть класс с именем CiF, и я хочу переместить указатель конструктора CiF на новый класс с именем Cmanager.Я пробовал что-то вроде этого:

CiF::CiF() : Cmanager(new Cmanager(CiF THIS))
{
}

пожалуйста, помогите спасибо

Ответы [ 2 ]

1 голос
/ 08 января 2011

Без отношения между CiF и Cmanager, я думаю, что это не может быть достигнуто.

#include <iostream>
class Cmanager
{
};

class Cif:public Cmanager
{
    Cmanager *ptr ;
    public:
    bar() : ptr(this) 
    {
    } ;
};

int main()
{
    Cif obj ;
    return 0;
}
1 голос
/ 08 января 2011

Следующий код показывает, как указатель одного класса передается другому в ctor. Я думаю, это то, что вы пытаетесь достичь.

Я НАСТОЯТЕЛЬНО рекомендую вам не использовать подобный код, но вы не дали достаточно информации о вашем сценарии использования, и поэтому я не могу дать вам альтернативы.

Возможно, вам стоит взглянуть на умные указатели и общий дизайн класса. (При указании указателей на любой другой класс вам нужно контролировать, какой класс владеет объектом, удаляет его и т. Д.)

class CiF;

class Cmanager
{
public:
    Cmanager() :
      cif_(0)
    {};
    void setCiF(CiF* cif)
    {
        cif_ = cif;
    }
private:
    CiF* cif_;
};

class CiF
{
public:
    CiF() :
      cmanager_(Cmanager())
    {
        cmanager_.setCiF(this);
    }

private:
    Cmanager cmanager_;
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...