模棱两可的错误重载运算符<< QdataStream子类和个人类

时间:2018-06-29 01:23:53

标签: c++ qt

我正在使用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。

我不明白。

有人来帮助我吗?

1 个答案:

答案 0 :(得分:1)

最后,我将遵循KubaOber的建议(在我的问题的评论中)并使QDataStream成为类的组成部分,而不是对QDataStream进行子类化。

感谢KubaOber的建议!