首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误:没有调用"Queue::Queue()“的匹配函数

错误:没有调用"Queue::Queue()“的匹配函数
EN

Stack Overflow用户
提问于 2016-02-23 07:30:11
回答 1查看 1.7K关注 0票数 0

因此,我试图在我的main.cpp文件中调用一个函数,但是我得到了"error: no匹配函数来调用‘Queue::Queue()“。

Queue.h

代码语言:javascript
复制
#ifndef QUEUE_H
#define QUEUE_H
#include <iostream>

class Queue
{
    public:
        Queue(int);
        ~Queue();
        //circular queue methods
        void enqueue(std::string);
        std::string dequeue(); //should send through network, call transmit msg
        void printQueue();
        bool queueIsFull(); //send when full
        bool queueIsEmpty(); //send when empty

    protected:
    private:
        int queueSize;
        int queueHead;
        int queueTail;
        int queueCount;
        std::string *arrayQueue;
};

#endif // QUEUE_H

Queue.cpp

代码语言:javascript
复制
#include "Queue.h"
#include <iostream>
#include <fstream>
#include <sstream>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

using namespace std;

Queue::Queue(int qs)
{
    queueSize = qs;
    arrayQueue = new string[queueSize];
    queueHead = 0;
    queueTail = 0;
}

Queue::~Queue()
{
    delete[] arrayQueue;
}

void Queue::enqueue(string word)
{
    for (int i=0;i<10;i++)
    {
        arrayQueue[i] = word;
    }

}

void Queue::printQueue()
{
    for(int j=0;j<10;j++)
    {
        cout<<arrayQueue[j]<<endl;
    }
}

main.cpp

代码语言:javascript
复制
#include <iostream>
#include "Queue.h"


using namespace std;

int main()
{

    int userChoice;
    Queue q;

    while(2==2)
    {

        cout<<"======Main Menu======"<<endl;
        cout<<"1. Enqueue word"<<endl;
        cout<<"2. Dequeue word"<<endl;
        cout<<"3. Print queue"<<endl;
        cout<<"4. Enqueue sentence"<<endl;
        cout<<"5. Quit"<<endl;
        cin>>userChoice;

        if (userChoice == 1)
        {
            string enqueueWord;
            cout<<"word: ";
            cin>>enqueueWord;
            enqueue(enqueueWord);
        }

        if (userChoice == 2)
        {

        }

        if (userChoice == 3)
        {

        }

        if (userChoice == 4)
        {

        }

        if (userChoice == 5)
        {

        }

    }
    return 0;
}

因此,为了从头文件调用函数,我在int ()开头执行了"Queue q;“,然后当我需要调用函数时,我执行了”q.enqueue(EnqueueWord)“操作。我还试着做"Queue::enqueue(enqueueWord)“,但这也不起作用,我得到了一个不同的错误。我觉得这是一个简单的解决方法,但我就是搞不清楚。谢谢你的帮助,我可以自由地要求我澄清任何事情。

EN

回答 1

Stack Overflow用户

发布于 2016-02-23 07:32:28

代码语言:javascript
复制
Queue q;

尝试调用默认构造函数Queue::Queue。但是,自从您自己显式声明构造函数(即Queue::Queue(int) )以来,这个构造函数已经被自动移除。

初始化时将适当的参数传递给q,如

代码语言:javascript
复制
Queue q1(42);    // pre-C++11 syntax
Queue q{42};     // available since C++11

(注意: 42在这里只是一个示例性的价值。)

还可以使用默认参数将定义保持为-is,并使用默认值初始化对象。

备注:

  • 为什么是while(2==2)while (true)是常见的方式。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35571321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档