Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/148.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
队列实现错误C++; 当试图在C++中实现一个通用队列时,我面临着一个非常特殊的问题。代码如下: template <class T> class Queue { private: T * queue; int front; int back; int MAX_SIZE; public: Queue(){ Queue(SOME_PREDEFINED_CONSTANT); } Queue(int size){ queue = new T[size]; MAX_SIZE = size; front = 0; back = 0; cout << "inside constructor:" << " back= " << back << " front=" << front << endl; } void push(const T entry){ if(back < MAX_SIZE){ queue[back] = entry; back++; } } T peek(){ return queue[front]; } void pop(){ if(size() > 0){ front++; } if(front==back){ front = 0; back = 0; } } int size(){ cout << "size:" << " back=" << back << " front=" << front << endl; return (back-front); } }; 模板类队列{ 私人: T*队列; 内锋; int-back; int MAX_大小; 公众: 队列(){ 队列(一些预定义的常量); } 队列(整数大小){ 队列=新的T[大小]; 最大尺寸=尺寸; 正面=0; 后退=0; 当你这样做的时候 Queue(){ Queue(SOME_PREDEFINED_CONSTANT); }_C++_Queue - Fatal编程技术网

队列实现错误C++; 当试图在C++中实现一个通用队列时,我面临着一个非常特殊的问题。代码如下: template <class T> class Queue { private: T * queue; int front; int back; int MAX_SIZE; public: Queue(){ Queue(SOME_PREDEFINED_CONSTANT); } Queue(int size){ queue = new T[size]; MAX_SIZE = size; front = 0; back = 0; cout << "inside constructor:" << " back= " << back << " front=" << front << endl; } void push(const T entry){ if(back < MAX_SIZE){ queue[back] = entry; back++; } } T peek(){ return queue[front]; } void pop(){ if(size() > 0){ front++; } if(front==back){ front = 0; back = 0; } } int size(){ cout << "size:" << " back=" << back << " front=" << front << endl; return (back-front); } }; 模板类队列{ 私人: T*队列; 内锋; int-back; int MAX_大小; 公众: 队列(){ 队列(一些预定义的常量); } 队列(整数大小){ 队列=新的T[大小]; 最大尺寸=尺寸; 正面=0; 后退=0; 当你这样做的时候 Queue(){ Queue(SOME_PREDEFINED_CONSTANT); }

队列实现错误C++; 当试图在C++中实现一个通用队列时,我面临着一个非常特殊的问题。代码如下: template <class T> class Queue { private: T * queue; int front; int back; int MAX_SIZE; public: Queue(){ Queue(SOME_PREDEFINED_CONSTANT); } Queue(int size){ queue = new T[size]; MAX_SIZE = size; front = 0; back = 0; cout << "inside constructor:" << " back= " << back << " front=" << front << endl; } void push(const T entry){ if(back < MAX_SIZE){ queue[back] = entry; back++; } } T peek(){ return queue[front]; } void pop(){ if(size() > 0){ front++; } if(front==back){ front = 0; back = 0; } } int size(){ cout << "size:" << " back=" << back << " front=" << front << endl; return (back-front); } }; 模板类队列{ 私人: T*队列; 内锋; int-back; int MAX_大小; 公众: 队列(){ 队列(一些预定义的常量); } 队列(整数大小){ 队列=新的T[大小]; 最大尺寸=尺寸; 正面=0; 后退=0; 当你这样做的时候 Queue(){ Queue(SOME_PREDEFINED_CONSTANT); },c++,queue,C++,Queue,发生的情况是,您在默认构造函数中创建了一个临时对象,该对象立即超出范围并被销毁 有两种解决方法: 使用构造函数初始值设定项列表和委托构造函数的“新”方法: Queue() : Queue(SOME_PREDEFINED_CONSTANT) { /* empty */ } 使用默认参数的“旧”方法: template <class T> class Queue { ... public: Queue(int size = SOME_PREDEFINED_CONS

发生的情况是,您在默认构造函数中创建了一个临时对象,该对象立即超出范围并被销毁

有两种解决方法:

  • 使用构造函数初始值设定项列表和委托构造函数的“新”方法:

    Queue() : Queue(SOME_PREDEFINED_CONSTANT)
    { /* empty */ }
    
  • 使用默认参数的“旧”方法:

    template <class T> class Queue  {
        ...
    
    public:
        Queue(int size = SOME_PREDEFINED_CONSTANT){
            ...
        }
        ...
    };
    
    模板类队列{
    ...
    公众:
    队列(整数大小=一些预定义的常数){
    ...
    }
    ...
    };
    
  • 当你这样做的时候

    Queue(){
        Queue(SOME_PREDEFINED_CONSTANT);
    }
    
    发生的情况是,您在默认构造函数中创建了一个临时对象,该对象立即超出范围并被销毁

    有两种解决方法:

  • 使用构造函数初始值设定项列表和委托构造函数的“新”方法:

    Queue() : Queue(SOME_PREDEFINED_CONSTANT)
    { /* empty */ }
    
  • 使用默认参数的“旧”方法:

    template <class T> class Queue  {
        ...
    
    public:
        Queue(int size = SOME_PREDEFINED_CONSTANT){
            ...
        }
        ...
    };
    
    模板类队列{
    ...
    公众:
    队列(整数大小=一些预定义的常数){
    ...
    }
    ...
    };
    

  • 这:
    Queue(){Queue(一些预定义的常数);
    没有做您认为它正在做的事情。
    Queue():Queue(一些预定义的常数){
    如前所述,默认构造函数不会初始化任何成员。在其主体中,它会创建并立即丢弃一个临时的
    队列,该队列没有任何效果。请阅读。除了@Igor:
    队列(int size=SOME\u预定义的\u常量)
    实现了与“二合一”相同的效果。如果
    Queue
    是在没有参数的情况下构造的,则将使用
    某个预定义的常量
    作为默认值。此:
    Queue(){Queue(某个预定义的常量);
    没有执行您认为它正在执行的操作。
    Queue():Queue(某个预定义的常量){
    如前所述,默认构造函数不会初始化任何成员。在其主体中,它会创建并立即丢弃一个临时的
    队列,该队列没有任何效果。请阅读。除了@Igor:
    队列(int size=SOME\u预定义的\u常量)
    实现了与“二合一”相同的效果。如果
    队列
    是在没有参数的情况下构造的,则将
    某些预定义的常量
    用作默认值。委托构造函数是C++14?@user463035818 C++11委托构造函数是C++14?@user463035818 C++11