Это 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;
}