Как получить путь унаследованного класса с помощью функции базового класса? - PullRequest
0 голосов
/ 16 ноября 2018

Это main.cpp

 Directory* c = dynamic_cast<Directory*>(r->getChild("c"));
        cout << c->addChild(true, "ca") << endl;
        cout << c->addChild(true, "cn") << endl;
        cout << c->addChild(false, "cf1") << endl;
        cout << c->list() << endl;

        cout << "================= Test 6 =================" << endl;
        cout << c->getPath() << endl;
        cout << c->getChild("cn")->getPath() << endl;
        cout << c->getChild("cf1")->getPath() << endl;

Это мой ожидаемый вывод:

================= Test 6 =================
\c
\c\cn
\c\cf1

Это мой базовый класс - FSObject

class FSObject
{
private:
    string name;
    FSObject* parent; 
}

Thisмой унаследованный класс - Directory

class Directory : public FSObject
{
public:
    Directory(string name, FSObject* parent) : FSObject(name, parent) {};
}

Это мой унаследованный класс - SADirectory

class SADirectory : public Directory
{
public:
    SADirectory(string name, FSObject* parent);
private:
    FSObject* children[DIR_SIZE]; 

    int count;
}

Это мой другой унаследованный класс - Файл

  class File : public FSObject
    {
    private:
        string content; //the string content
    }

Учитываяmain.cpp, функция addChild может использоваться для добавления как файла, так и каталога.Но вопрос в том, как я могу получить результат, такой как ожидаемый вывод для реализации getPath () в классе FSObject?Спасибо за вашу помощь.

Это моя попытка рекурсии gatPath ()

 string FSObject::getPath(){ 
    if(this->getPath()=="\\"){ 
    return "";
     } 
    string temp = "\\";
     temp += this->parent->getPath() + this->name;
     return temp;
     }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...