gpt4 book ai didi

c++ - 错误 : no matching function for call to "Queue::Queue()"

转载 作者:行者123 更新时间:2023-11-28 02:11:21 25 4
gpt4 key购买 nike

所以我试图在我的 main.cpp 文件中调用一个函数,但我得到“错误:没有匹配函数来调用‘Queue::Queue()。”

队列.h

#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

队列.cpp

#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;
}
}

主要.cpp

#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;
}

因此,为了从头文件中调用函数,我执行了“Queue q;”在 int main() 的开头,然后当我需要调用函数时,我执行了“q.enqueue(enqueueWord)”。我也试过只做“Queue::enqueue(enqueueWord)”,但这也没有用,我得到了一个不同的错误。我觉得这是一个简单的修复,但我就是想不通。谢谢你的帮助并随时要求我澄清任何事情。

最佳答案

Queue q;

尝试调用默认构造函数 Queue::Queue。但是,此构造函数已自动删除,因为您自己显式声明了一个构造函数,即 Queue::Queue(int)

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

Queue q1(42);    // pre-C++11 syntax
Queue q{42}; // available since C++11

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

您还可以使用默认参数来保持定义不变并使用默认值初始化对象。


注意事项:

  • 为什么 while(2==2)while (true) 是常见的方式。

关于c++ - 错误 : no matching function for call to "Queue::Queue()",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35571321/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com