Указание на базовый объект из переменного объекта - PullRequest
0 голосов
/ 07 июня 2019

У меня есть класс преобразования

  class Transformation
  {

       private:
        Sum_Position pos;

       public:
           Transformation();
           Transformation(Sum_Position pos);
           Transformation(const Transformation& transformation);

           Sum_Position* GetPosition();
           void SetPosition(Sum_Position pos);
           int GetContainer( Container *cont);

   };

, который является типом данных в классе контейнера

     class Container
     { 
          private:
          std::string stdstrContainerName;
          std::string stdstrPluginType;
          Geometry* Geom;
          Sum_Material Material;
          Transformation transformation;   // datatype
          std::string stdstrImagePath;
          Texture2D texture;


   // Public Function here

       };

Могу ли я вернуть указатель, указывающий на объект контейнера, из преобразованияобъект класса

    int Transformation::GetContainer( Container *cont);

1 Ответ

2 голосов
/ 07 июня 2019

Здесь нет магии.Когда вы создаете экземпляр Transformation, вы должны передать указатель на контейнер.Удаление кода, не имеющего отношения к проблеме, которую вы можете сделать.

// Forward declare
class Container;

class Transformation
{

private:
    Container * _parent;
public:
    Transformation(Container * parent):
        _parent(parent)
    {}

    Container* GetContainer(){
        return _parent;
    }

};


class Container
{ 
private:
  Transformation _transformation;  

public:
  // Construct _transformation with a pointer to the container
  Container():
     _transformation(this)
  {}
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...