gpt4 book ai didi

c++ - 如何在 std :ostream& member, 中正确使用而 "this"是 const?

转载 作者:太空狗 更新时间:2023-10-29 22:59:10 26 4
gpt4 key购买 nike

我有一个名为“订阅者”的类,它继承自一个类名为“Client”,其中包含以下代码行,在“protected”中:

std::ostream& messagesSink;

std::ostream& getMessagesSink() {
return messagesSink;
}

(messagesSink 在订阅者的构造函数中初始化)

并且“订阅者”中有以下函数成员:

virtual void recieveMessage(const std::string& message ,
const Topic& topic,
const Client& client) const {
messagesSink << "Topic: "<< topic
<< ". Sender: #" << client.getId() << ". Reciver: #"
<< getId() << ".Message: " << message;
}

问题是这样的:在他目前的状态下,代码没有编译错误,但是如果我在函数getMessagesSink()中替换成员messagesSink的使用,如下代码,出现编译错误:

virtual void recieveMessage(const std::string& message ,
const Topic& topic,
const Client& client) const {
getMessagesSink() << "Topic: "<< topic
<< ". Sender: #" << client.getId() << ". Reciver: #"
<< getId() << ".Message: " << message;
}

我的问题是:

1) 之前和之后有什么区别?

2) 如何正确使用对 std::ostream 的引用,同时在将“this”保持为常量的函数中?

最佳答案

问题是 getMessagesSink 没有被标记为 constreceiveMessage 被标记为 const,因此它不能调用非 const 成员函数。

关于c++ - 如何在 std :ostream& member, 中正确使用而 "this"是 const?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37891654/

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