C++ 如何修复错误:“引用;表达式不能用作函数";当我将变量的类型从Private更改为Public时?

C++ 如何修复错误:“引用;表达式不能用作函数";当我将变量的类型从Private更改为Public时?,c++,data-structures,queue,deque,enqueue,C++,Data Structures,Queue,Deque,Enqueue,试图通过生成二进制数来执行简单的入队/出队操作,但在第18行遇到错误 Main: #include <iostream> #include "quetype.cpp" #include "quetype.h" #include <queue> using namespace std; int main() { QueType<string> q; int n = 10; q.Enqueue("1"); whil

试图通过生成二进制数来执行简单的入队/出队操作,但在第18行遇到错误 Main:

    #include <iostream>
#include "quetype.cpp"
#include "quetype.h"
#include <queue>

using namespace std;

int main()
{

    QueType<string> q;
    int n = 10;

    q.Enqueue("1");

    while (n--)
    {
        string s1 = q.front(); //expression cant be used as a function
        q.Dequeue();
        cout << s1 << "\n";
        string s2 = s1;  
        q.Enqueue(s1.append("0"));
        q.Dequeue(s2.append("1"));

    }

}
#ifndef QUETYPE_H_INCLUDED
#define QUETYPE_H_INCLUDED

class FullQueue
{};
class EmptyQueue
{};
template<class ItemType>
class QueType
{
    public:
        QueType();
        QueType(int max);
        ~QueType();
        void MakeEmpty();
        bool IsEmpty();
        bool IsFull();
        void Enqueue(ItemType);
        void Dequeue(ItemType&);
        int front;
        //int rear;
        //ItemType* items;
        //int maxQueue;
    private:
        //int front;
        int rear;
        ItemType* items;
        int maxQueue;
};

#endif // QUETYPE_H_INCLUDED
#include"quetype.h"
#include <queue>
template<class ItemType>
QueType<ItemType>::QueType(int max){
    maxQueue=max+1;
    rear=max;
    front=max;
    items= new ItemType[ maxQueue];
}
template<class ItemType>
QueType<ItemType>::QueType(){
    maxQueue=501;
    rear=maxQueue-1;
    front=maxQueue-1;
    items= new ItemType[ maxQueue];
}
template<class ItemType>
QueType<ItemType>::~QueType(){
    delete[] items;
}
template<class ItemType>
void QueType<ItemType>::MakeEmpty(){
    rear=maxQueue-1;
    front=maxQueue-1;
}
template<class ItemType>
bool QueType<ItemType>::IsEmpty(){
    return (rear==front);
}
template<class ItemType>
bool QueType<ItemType>::IsFull(){
    return ((rear+1)%maxQueue==front);
}
template<class ItemType>
void QueType<ItemType>::Enqueue(ItemType newItem){
    if(IsFull())
        throw FullQueue();
    else{
        rear=(rear+1)%maxQueue;
        items[rear]=newItem;
    }
}
template<class ItemType>
void QueType<ItemType>::Dequeue(ItemType& Item){
    if(IsEmpty())
        throw EmptyQueue();
    else{
        front=(front+1)%maxQueue;
        Item=items[front];
    }
}
#包括
#包括“quetype.cpp”
#包括“quetype.h”
#包括
使用名称空间std;
int main()
{
q型;
int n=10;
q、 排队(“1”);
而(n--)
{
字符串s1=q.front();//表达式不能用作函数
q、 出列();

cout在您的Quetype类中
front
是成员变量而不是成员函数,您必须
删除()

只要写

string s1= q.front;

但是
QueType::front
不是一个函数,那么为什么要尝试这样调用它呢?