所以,我想創建一個自定義類,但無法弄清楚如何讓它正常工作。以下是我想出了:我不能創建一個自定義的類沒有遇到編譯錯誤
message.h:
#include <errno.h>
#include <netdb.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fstream>
#include <string>
using namespace std;
class Message {
public:
Message(string, string, int);
~Message();
string getMessage();
string getSubject();
int getLength();
void setMessage(string);
void setLength(int);
void setSubject(string);
private:
string subject;
string message;
int length;
};
而且message.cc:
#include "message.h"
Message::Message(string Subject, string Message, int Length){
subject = Subject;
message = Message;
length = Length;
}
string
Message::getMessage(){
return message;
}
void
Message::setMessage(string Message){
message = Message;
}
string
Message::getSubject(){
return subject;
}
void
Message::setSubject(string Subject){
subject = Subject;
}
int
Message::getLength(){
return length;
}
void
Message::setLength(int Length){
length = Length;
}
這裏就是我想要做:
map<string,vector<Message> > database;
string request = get_request(client);
//store the request in memory
vector<Message> messageList = database.at("user1");
messageList.push_back(new Message("subject", request, request.size()));
database["user1"] = messageList;
此代碼給出了以下編譯錯誤(因爲我正在創建一條新消息):
//no known conversion for argument 1 from Message* to const Message&
但是,當我改變代碼爲:
//store the request in memory
vector<Message> messageList = database.at("user1");
Message message;
message.setMessage(request);
message.setSubject("subject");
message.setLength(request.length());
messageList.push_back(message);
database["user1"] = messageList;
它給出消息消息下列錯誤:
//No matching function for call to Message::Message()
//candidates are:
//Message::Message(str::string, str::string, int)
//Message::Message(const Message&)
//candidate expects 3 and 1 arguments, 0 provided
所以,這使我相信,我失去了一些東西在我的消息類(或頭),這將允許這種類型的實例,但我不知道如何做到這一點或我失蹤。任何幫助將非常感激。我只對C++有一個非常基本的理解,因爲我主要使用Java進行編程,但無論我嘗試查找錯誤還是以其他方式編寫代碼,我都無法編譯代碼。再次感謝。
如果您習慣於Java,那麼您可能習慣於將所有對象自動視爲引用(「Integer」類與「int」基本類型)。 C++沒有這樣的魔力。 'new'返回一個指針。 [這個問題在SO](http://stackoverflow.com/questions/57483/what-are-the-differences-between-a-pointer-variable-and-a-reference-variable-in?rq=1)可能是進一步閱讀的好起點。 – Dan 2014-09-22 03:35:34