gpt4 book ai didi

C++容器/迭代器依赖问题

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:24:28 25 4
gpt4 key购买 nike

我正在研究一个看起来像这样的容器类:

class hexFile {
public:
HANDLE theFile;
unsigned __int64 fileLength;
hexFile(const std::wstring& fileName)
{
theFile = CreateFile(fileName.c_str(), GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_DELETE | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL);
if (theFile == INVALID_HANDLE_VALUE);
{
throw std::runtime_error(eAsciiMsg("Could not open file!"));
}
BY_HANDLE_FILE_INFORMATION sizeFinder;
GetFileInformationByHandle(theFile, &sizeFinder);
fileLength = sizeFinder.nFileSizeHigh;
fileLength <<= 32;
fileLength += sizeFinder.nFileSizeLow;
};
~hexFile()
{
CloseHandle(theFile);
};
hexIterator begin()
{
hexIterator theIterator(this, true);
return theIterator;
};
hexIterator end()
{
hexIterator theIterator(this, false);
return theIterator;
};
};

和一个匹配的迭代器类看起来像这样:

class hexIterator : public std::iterator<std::bidirectional_iterator_tag, wchar_t>
{
hexFile *parent;
public:
bool highCharacter;
__int64 filePosition;
hexIterator(hexFile* file, bool begin);
hexIterator(const hexIterator& toCopy);
~hexIterator();
hexIterator& operator++()
{
return ++this;
}
hexIterator& operator++(hexIterator& toPlus);
hexIterator& operator--()
{
return --this;
}
hexIterator& operator--(hexIterator& toMinus);
hexIterator& operator=(const hexIterator& toCopy);
bool operator==(const hexIterator& toCompare) const;
bool operator!=(const hexIterator& toCompare) const;
wchar_t& operator*();
wchar_t* operator->();
};

我的问题是...两个类都需要根据另一个来实现。我不确定如何在迭代器中引用容器,例如,因为在定义迭代器时,容器尚未定义。

如何做到这一点?

比利3

最佳答案

前向声明一个在另一个之前。您可以在另一个类的声明中使用对前向声明类的引用,所以这应该有效:

class hexFile; // forward

class hexIterator : ,,, {
...
};

class hexFile {
...
};

关于C++容器/迭代器依赖问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1015276/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com