none
VARIANT operator>> RRS feed

  • 问题

  • #include<iostream>
    #include<comutil.h>
    using namespace std;
    int qiuhe(int a,int b)
    {
    int c;
    c=a+b;
    return c;
    }
    double qiuhe(double a,double b)
    {
    double c;
    c=a+b;
    return c;
    }
    void main()
    {
    VARIANT a,b,c;
     cin>>a>>b;
     c=qiuhe(a,b);
    cout<<c<<endl;

    }
    这个程序有问题希望得到修改

    2009年5月22日 2:46

答案

  • 这里不要用VARIANT,VARIANT 没有operator>>。建议使用模板。
    创建一个模板类,模板类添加一个operator+,并同时内联一个operator>>。从而实现你所描述的功能。
    2009年5月22日 3:26
    版主
  • 这是因为cin的>>符号不知道你到底想把VARIANT 转换成什么类型,导致多义错误.
    可以这样来解决:)
    void main()
    {
     double a,b,c;
    cin>>a>>b;
    c=qiuhe(a,b);
    cout<<c<<endl;

    }

    明确变量的类型就可以通过.VARIANT 这个和其他语言的variant不同,若是用 _variant_t 这个类型会好一点.

    void main()
    {
     _variant_t a,b,c;
     cin>>a.intVal>>b.intVal;
    c=qiuhe((int)a,(int)b);
    cout<<c.intVal<<endl;

    }


    Hello world
    2009年5月22日 13:05
    版主

全部回复

  • 这里不要用VARIANT,VARIANT 没有operator>>。建议使用模板。
    创建一个模板类,模板类添加一个operator+,并同时内联一个operator>>。从而实现你所描述的功能。
    2009年5月22日 3:26
    版主
  • 这是因为cin的>>符号不知道你到底想把VARIANT 转换成什么类型,导致多义错误.
    可以这样来解决:)
    void main()
    {
     double a,b,c;
    cin>>a>>b;
    c=qiuhe(a,b);
    cout<<c<<endl;

    }

    明确变量的类型就可以通过.VARIANT 这个和其他语言的variant不同,若是用 _variant_t 这个类型会好一点.

    void main()
    {
     _variant_t a,b,c;
     cin>>a.intVal>>b.intVal;
    c=qiuhe((int)a,(int)b);
    cout<<c.intVal<<endl;

    }


    Hello world
    2009年5月22日 13:05
    版主