Я искал много разных вопросов и не смог найти решения, соответствующего моей конкретной проблеме.У меня есть этот файл заголовка для очереди:
#ifndef HEADERFILE
#define HEADERFILE
#include <iostream>
#include <vector>
using namespace std;
template<class myType>
class Queue{
private:
int size;
vector<myType> list;
public:
Queue(int);
void Enqueue(myType);
myType Dequeue();
myType PeekFront();
int length();
void empty();
myType Index(int);
friend void printArray();
};
#endif
Вопрос, о котором идет речь, friend void printArray
.Вот файл реализации:
#include "queueTask1.h"
#include <vector>
#include <iostream>
using namespace std;
(Other function implementations)
void printArray(){
for (int i = 0; i < list.size(); i++){
cout << list.at(i) << ", ";
}
cout << endl;
}
Ошибка при попытке запустить это утверждает, что
'список' не объявлен в этой области
однако он объявлен в заголовочном файле, и все остальные функции-члены работают нормально.По какой-то причине printArray
не может найти элемент приватных данных list
, хотя это должна быть функция друга.