因此,我试图在我的main.cpp文件中调用一个函数,但是我得到了"error: no匹配函数来调用‘Queue::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_HQueue.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;
}
}main.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;
}因此,为了从头文件调用函数,我在int ()开头执行了"Queue q;“,然后当我需要调用函数时,我执行了”q.enqueue(EnqueueWord)“操作。我还试着做"Queue::enqueue(enqueueWord)“,但这也不起作用,我得到了一个不同的错误。我觉得这是一个简单的解决方法,但我就是搞不清楚。谢谢你的帮助,我可以自由地要求我澄清任何事情。
发布于 2016-02-23 07:32:28
Queue q;尝试调用默认构造函数Queue::Queue。但是,自从您自己显式声明构造函数(即Queue::Queue(int) )以来,这个构造函数已经被自动移除。
初始化时将适当的参数传递给q,如
Queue q1(42); // pre-C++11 syntax
Queue q{42}; // available since C++11(注意: 42在这里只是一个示例性的价值。)
还可以使用默认参数将定义保持为-is,并使用默认值初始化对象。
备注:
while(2==2)?while (true)是常见的方式。https://stackoverflow.com/questions/35571321
复制相似问题