CArray嵌套,add()报错C2280,100分

缥缈圣灵 2018-03-22 10:04:06
我先定义了两个Struct,定义如下:
//单一证券节点数据(一条Bar)
struct CHqData
{
CTime datetime;//行情日期时间
double lastprice;//最新价格
double open;//开盘价
double close;//收盘价
double high;//最高价
double low;//最低价
double vol;//成交量
double amt;//成交额
};
//单一证券的序列数据
struct CHqArray
{
CString stkcode;//证券代码;
CString windcode;//证券代码(万德代码)
CString period;//周期----‘D',日线,'W'周线,'M'月线,'Y'年线,'t'tick数据,'1'一分钟,'30'....
CArray<CHqData,CHqData&> hqDataArray;//行情序列
};

CHqArray中的成员嵌套了一个CArray,然后再建立一组全局变量,用来存放所有股票的行情序列
CArray<CHqArray, CHqArray&> hqBuff_Custom;//自定义周期行情数据缓存;

执行赋值
CHqArray tempHqArray;
tempHqArray.stkcode = “600191”;
tempHqArray.windcode = “600191.SH”;
tempHqArray.period = “M”;
tempHqArray.hqDataArray.Add(ahqdata);//ahqdata是从外部传进来的(赋值部分省略)

hqArray.Add(tempHqArray);

编译时,VS报错C2280 “CHqArray &CHqArray::operator =(const CHqArray &)”: 尝试引用已删除的函数

上网搜索了半天,也找不到答案,请高手指点,详细点谢谢,赏分100
...全文
573 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
woshi_hujunjun 2018-03-23
  • 打赏
  • 举报
回复
引用 5 楼 xuzzzhen123 的回复:
不好意思,标准写法如下:
//单一证券的序列数据
struct CHqArray
{
    CString stkcode;//证券代码;
    CString windcode;//证券代码(万德代码)
    CString period;//周期----‘D',日线,'W'周线,'M'月线,'Y'年线,'t'tick数据,'1'一分钟,'30'....
    CArray<CHqData, CHqData&> hqDataArray;//行情序列

    CHqArray() {}
    
    virtual CHqArray& operator =(const CHqArray& o)
    {
        if (&o != this)
        {
            stkcode = o.stkcode;
            windcode = o.windcode;
            period = o.period;
        }
        return *this;
    }
};
zgl7903 2018-03-22
  • 打赏
  • 举报
回复
非基础类型的 需要 重载 operator =

//单一证券的序列数据
struct CHqArray
{
  CString stkcode;//证券代码;
  CString windcode;//证券代码(万德代码)
  CString period;//周期----‘D',日线,'W'周线,'M'月线,'Y'年线,'t'tick数据,'1'一分钟,'30'....
  CArray<CHqData,CHqData&> hqDataArray;//行情序列

  virtual void operator = (const CHqArray &other)
  {
    if(this != &other)
    {
      stkcode = other.stkcode;
      windcode = other.windcode;
      period = other.period;
      hqDataArray.Copy(other.hqDataArray);
    }
  }
};
缥缈圣灵 2018-03-22
  • 打赏
  • 举报
回复
不好意思,hqArray.Add(tempHqArray);就是hqBuff_Custom.Add(tempHqArray)
worldy 2018-03-22
  • 打赏
  • 举报
回复
没有看到你hqArray在哪里定义
天外怪魔 2018-03-22
  • 打赏
  • 举报
回复
补充拷贝构造函数、重载赋值运算符问题解决:
//单一证券的序列数据
struct CHqArray
{
    CString stkcode;//证券代码;
    CString windcode;//证券代码(万德代码)
    CString period;//周期----‘D',日线,'W'周线,'M'月线,'Y'年线,'t'tick数据,'1'一分钟,'30'....
    CArray<CHqData, CHqData&> hqDataArray;//行情序列

    CHqArray() {}
    CHqArray(const CHqArray& o)
    {
        if (&o != this)
        {
            stkcode = o.stkcode;
            windcode = o.windcode;
            period = o.period;
        }
    }
    CHqArray operator =(const CHqArray& o)
    {
        if (&o != this)
        {
            stkcode = o.stkcode;
            windcode = o.windcode;
            period = o.period;
        }
        return *this;
    }
};
注意: 1)请根据业务需要自行完成拷贝构造函数和重载赋值运算符 2)原理请自行度娘 3)有问题请给我留言
天外怪魔 2018-03-22
  • 打赏
  • 举报
回复
不好意思,标准写法如下:
//单一证券的序列数据
struct CHqArray
{
    CString stkcode;//证券代码;
    CString windcode;//证券代码(万德代码)
    CString period;//周期----‘D',日线,'W'周线,'M'月线,'Y'年线,'t'tick数据,'1'一分钟,'30'....
    CArray<CHqData, CHqData&> hqDataArray;//行情序列

    CHqArray() {}
    
    virtual CHqArray& operator =(const CHqArray& o)
    {
        if (&o != this)
        {
            stkcode = o.stkcode;
            windcode = o.windcode;
            period = o.period;
        }
        return *this;
    }
};

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧