我正在尝试定义两个类,一个用于用户,一个用于消息。 Message类将具有属性UserID来标识谁发布了消息,这也是User类的属性。]
我遵循了为餐厅(具有Users,Foods和Orders类,由Users和Foods的属性组成的类)执行此操作的教程,但是这些属性均设置为public,我的任务要求我这样做具有带有getters / setters的私有属性。最后,我有一个cout语句,该语句打印出Message类的属性,但是该属性也是User类的一部分,它会产生以下错误:
错误C2679二进制'<
错误(活动)E0349没有运算符“ <
如果我删除Cout语句的msg.getUserID部分,代码将运行正常。
我发现的这个问题的其他实例与公共属性有关,或者使用了Friend关键字。还有其他方法吗?我尝试将属性在User类中移至public(尽管我无法为自己的任务执行此操作),但仍然遇到相同的错误。我想是因为我已经在Message类中将getUserID声明为User类型,但是找不到其他方法。我对C ++还是很陌生,因此如果某些代码不是执行某些操作的最有效方法,则对此表示歉意(这是我的分析课程中必修的模块,到目前为止,我仅使用了Python)。任何帮助将非常感激。谢谢!
#include <iostream>
#include <string>
using namespace std;
class User {
private:
int userID;
string firstName;
string lastName;
string email;
public:
void setUser(int userID, string firstName, string lastName, string email) {
this->userID = userID;
this->firstName = firstName;
this->lastName = lastName;
this->email = email;
}
int getUserID() {
return userID;
}
string getFirstName() {
return firstName;
}
string getLastName() {
return lastName;
}
string getEmail() {
return email;
}
};
class Message {
private:
int msgID;
User userID;
string message;
public:
void setMessage(string message, User userID) {
static int msgID = 0;
msgID++;
this->message = message;
this->msgID = msgID;
this->userID = userID;
}
string getMessage() {
return message;
}
User getUserID() {
return userID;
}
int getMsgID() {
return msgID;
}
};
int main()
{
User user1;
User user2;
user1.setUser(5, "Alice", "Smith", "[email protected]");
user2.setUser(8, "Bob", "Jones", "[email protected]");
Message msg1;
Message msg2;
msg1.setMessage("Hello this is a message", user1);
msg2.setMessage("this is a second message", user2);
cout << "message ID: " << msg1.getMsgID() << ", user ID: " << msg1.getUserID() << ", message: " << msg1.getMessage() << endl;
cout << "message ID: " << msg2.getMsgID() << ", user ID: " << msg2.getUserID() << ", message: " << msg2.getMessage() << endl;
}
我正在尝试定义两个类,一个用于用户,一个用于消息。 Message类将具有UserID属性,以标识谁发布了消息,这也是User类的属性。 ...
消息仅知道名为User
的userID
(不好意思,因为它是一个整体User
,而不仅仅是ID)。它需要向User
询问User
的ID,因此请更改
如果只想打印userID,则不能将整个对象传递给cout,因为它不知道如何打印,只能传递对象userID的userID。>
cout << "message ID: " << msg1.getMsgID() << ", user ID: " << msg1.getUserID().getUserID() << ", message: " << msg1.getMessage() << endl;
^^^^^^^^^^^^