我正在使用Qt 5.10,必须将QDatastream子类化,并且将运算符<<重载到另一个类中,例如:
networkD3
我遇到此错误:
# Create nodes and links data.frames
nodes <- data.frame(name = unique(unlist(hc_dat[, 1:2])))
links <- data.frame(
source = match(hc_dat$from, nodes$name) - 1,
target = match(hc_dat$to, nodes$name) - 1,
value = hc_dat$N)
# Draw a Sankey diagram
library(networkD3)
sankeyNetwork(
Links = links, Nodes = nodes,
Source = "source", Target = "target", Value = "value", NodeID = "name",
fontSize = 16, fontFamily = "sans-serif", nodeWidth = 30, nodePadding = 30)
当我删除像这样的数据后面的const运算符时:
class myDataStream:public QDataStream
{
public :
myDataStream(QIODevice* device):QDataStream(device)
{}
};
class data
{
public:
data(double v):data_(v) {}
double getData() const {return data_;}
void record(myDataStream& stream) const;
private:
double data_;
};
void data::record(myDataStream &stream) const
{
stream<<getData();
}
myDataStream &operator<<(myDataStream &stream, const data &d )
{
stream<<d.getData(); //<------ Error here
return stream;
}
我没有错误。运算符<<不会更改类数据...是吗? getData()方法是const。
我不明白。
有人来帮助我吗?
答案 0 :(得分:1)
最后,我将遵循KubaOber的建议(在我的问题的评论中)并使QDataStream成为类的组成部分,而不是对QDataStream进行子类化。
感谢KubaOber的建议!