저는 C++을 처음 사용하는데 도움이 필요합니다. 내 문제는 내 구조 해시 쌍 배열을 구현하려고, 거기에 키 및 데이터입니다. 이 구조에서는 hasNext와 next 메소드를 가진 구조체 반복자를 중첩했습니다. 중첩 된 구조에서 내 배열을 (이 배열 부모입니다) 볼 수 없기 때문에 나는 생성자를 통해 전달해야하지만 "...에서 변환 할 수 없습니다 ...", 문제는 getIterator 메서드에서 _array 전달하는 것입니다. 코드는 다음과 같습니다. 당신이 나를 도울 수? 감사합니다hasNext와 Next가있는 C++ 반복기
#pragma once
template<typename T, typename U, int Size, int(*HashFunction)(T)>
struct HashPairPole {
// Pair - key - data
struct Par {
// key
T _first;
// data
U _second;
// list for collision records
Par* _overflow;
Par(T t, U u) {
_first = t;
_second = u;
_overflow = nullptr;
}
};
HashParovePole() {}
// Static array for save data
Par* _array[Size];
// Add record into hash table
void add(T t, U u) {
// calculating of index
Par* prvek;
int idx = HashFunction(t) % Size;
// Element will be saved in _array[idx], if it is free, else will be
//saved to list (->_overflow)
prvek = new Par(t, u);
if (_array[idx] == nullptr) {
_array[idx] = prvek;
}
else {
prvek->_overflow = _array[idx];
}
_array[idx] = prvek;
}
// Get data from hash tabule
U& get(T t) {
int idx = HashFunction(t) % Size;
Par * prvni = _array[idx];
while (prvni->_overflow != nullptr) {
if (prvni->_first == t) {
return prvni->_second;
}
prvni = prvni->_overflow;
}
}
U& operator[](T t) {
return get(t);
}
U operator[](T t) const {
const U temp = get(t);
return temp;
}
// Iterator for walking all hash table
struct iterator {
Par* index[Size];
Par* pomPar;
int temp = 0;
iterator(Par * _array) {
index = _array;
pomPar = index[0];
}
bool hasNext()const {
return pomPar != nullptr;
}
std::pair<T, U> next() {
std::pair<T, U> data;
if (hasNext()) {
data.first = pomPar->_first;
data.second = pomPar->_second;
pomPar = pomPar->_overflow;
}
temp++;
pomPar = index[temp];
return data;
}
};
// Vytvori iterator
iterator getIterator() {
return iterator(_array);
}
};
어떤 줄에 컴파일 오류가 있습니까? 컴파일 오류의 텍스트는 무엇입니까? FAQ를 읽고 MCVE를 게시하십시오 : http://stackoverflow.com/help/mcve – alexeykuzmin0
'Par * _array! = Par * index [Size]'. – NathanOliver
주제에서 벗어나지 만 ... 나는'HashParovePole() {}'이 실제로'HashPairPole() {}'이되어야한다고 생각합니다. –