纠正重写QDataStream运算符和链接问题

时间:2016-04-30 08:52:35

标签: c++ qt override qdatastream

我需要覆盖>>和<< QDataStream的运算符。我的代码是:

import Html exposing (..)
import String
import Lazy.List as LL exposing (LazyList)

type alias Stack = List String


push : String -> Stack -> Stack
push tok stack = 
 (tok :: stack)


pop : Stack -> (Maybe String, Stack)
pop stack = 
 case stack of
   hd :: tl -> (Just hd, tl)
   _ -> (Nothing, [])

stackIterator : Stack -> LazyList String
stackIterator stack =
 LL.iterate (\(mhd, tl) -> pop tl) (pop stack)
  |> LL.map fst
  |> LL.takeWhile (\a -> a /= Nothing)
  |> LL.map (Maybe.withDefault "") -- Default just for theoretical completeness

reverseString: String -> String
reverseString incoming = 
 let 
  stringStack = incoming 
   |> String.split "" 
   |> List.foldl push [] 
 in 
   LL.foldr String.append "" (stackIterator stringStack)


main : Html 
main = 
 "Hello World!"
 |> reverseString
 |> toString 
 |> text 

成功编译之后,我会遇到一些误解错误:

QDataStream &operator <<(QDataStream &out, const SScenarioEntry Entry)
{
    out.writeRawData(Entry.EntryName, sizeof(Entry.EntryName));
    out << Entry.Number;
    out << Entry.Type;
    out.writeRawData(Entry.RequestString, sizeof(Entry.RequestString));
    out.writeRawData(Entry.AnswerString, sizeof(Entry.AnswerString));
    out.writeRawData(Entry.AdditionalParams, sizeof(Entry.AdditionalParams));
    out << Entry.Timeout;
    return out;
}

QDataStream &operator >>(QDataStream &in, SScenarioEntry Entry)
{
    in.readRawData(Entry.EntryName, sizeof(Entry.EntryName));
    in >> Entry.Number;
    in >> Entry.Type;
    in.readRawData(Entry.RequestString, sizeof(Entry.RequestString));
    in.readRawData(Entry.AnswerString, sizeof(Entry.AnswerString));
    in.readRawData(Entry.AdditionalParams, sizeof(Entry.AdditionalParams));
    in >> Entry.Timeout;
    return in;
}

我有两个问题:

  1. 我如何定义&lt;&lt;和&gt;&gt;操作员正确的工作;
  2. 如果此代码正确,请如何解决链接错误。

  3. Tnx的答案。

1 个答案:

答案 0 :(得分:0)

这很奇怪,但问题是通过划分功能公告和说明来解决的。