| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1598 人关注过本帖
标题:求助!!在结构体中使用this指针的问题
只看楼主 加入收藏
limeng_HOHO
Rank: 2
来 自:上海
等 级:论坛游民
帖 子:49
专家分:50
注 册:2007-7-16
收藏
 问题点数:0 回复次数:7 
求助!!在结构体中使用this指针的问题
//这是一个简单的描述平面的结构体 aX+bY+cZ+d=0为平面
struct Plane
{
    double a,b,c,d;
    Plane(double aa,double bb,double cc,double dd)
    {
        a=aa,b=bb,c=cc,d=dd;
    }
//TVector是一个三维向量结构体
//_Normal是平面的法向量
    TVector _Normal(this->a,this->b,this->c);
};

可是编译后出现错误:
 error C2059: syntax error : 'this'
请问这是为什么???

TVector 的结构如下:
struct TVector
{
    double Vx;
    double Vy;
    double Vz;
    TVector()
    {
        Vx=Vy=Vz=0;
    }
    TVector(double x,double y,double z)
    {
        Vx=x;Vy=y;Vz=z;
    }    
};
搜索更多相关主题的帖子: double 结构体 指针 TVector 三维 
2008-04-29 10:34
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
你有没同名变量干扰..要this做什么呢?如果不是局部类...就用class吧

学习需要安静。。海盗要重新来过。。
2008-04-29 10:41
limeng_HOHO
Rank: 2
来 自:上海
等 级:论坛游民
帖 子:49
专家分:50
注 册:2007-7-16
收藏
得分:0 
回复 2# 的帖子
起初我也没用this
struct Plane
{
    double a,b,c,d;
    Plane(double aa,double bb,double cc,double dd)
    {
        a=aa,b=bb,c=cc,d=dd;
    }
    TVector _Position;
    TVector _Normal(a,b,c);//开始的情况
};
但是编译后出现 error C2061: syntax error : identifier 'a'
请问这个错误怎么解决?谢谢

世界并不美丽 然而又因此而美丽
2008-04-29 10:47
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
你是作为函数参数的必须指明数据类型..或者不要
struct TVector
{
    double Vx;
    double Vy;
    double Vz;
    TVector()
    {
        Vx=Vy=Vz=0;
    }
    TVector(double x,double y,double z)
    {
        Vx=x;Vy=y;Vz=z;
    }   
};
struct Plane
{
    double a,b,c,d;
    Plane(double aa,double bb,double cc,double dd)
    {
        a=aa,b=bb,c=cc,d=dd;
    }

    TVector _Normal()
    {
         TVector D(a,b,c);
         return D;
    };
};

学习需要安静。。海盗要重新来过。。
2008-04-29 10:56
limeng_HOHO
Rank: 2
来 自:上海
等 级:论坛游民
帖 子:49
专家分:50
注 册:2007-7-16
收藏
得分:0 
回复 4# 的帖子
按照您的方法编译后没有问题了 先谢谢了
但是我不明白TVector D(a,b,c)不也是函数么,为什么嵌套在_Normal()就没有问题呢

TVector _Normal(a,b,c)和
TVector _Normal(){
         TVector D(a,b,c);
         return D;
    };
有什么区别呢 麻烦楼上了 

世界并不美丽 然而又因此而美丽
2008-04-29 11:05
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
TVector _Normal(a,b,c),这个叫函数原形..你必须指出函数参数类型TVector _Normal(double a,double b,double c)
struct TVector
{
    double Vx;
    double Vy;
    double Vz;
    TVector()
    {
        Vx=Vy=Vz=0;
    }
    TVector(double x,double y,double z)
    {
        Vx=x;Vy=y;Vz=z;
    }   
};
struct Plane
{
    double a,b,c,d;
    Plane(double aa,double bb,double cc,double dd)
    {
        a=aa,b=bb,c=cc,d=dd;
    }

    TVector _Normal(double a,double b,double c)
    {   
         TVector D(a,b,c);
         return D;
    };
};



struct TVector
{
    double Vx;
    double Vy;
    double Vz;
    TVector()
    {
        Vx=Vy=Vz=0;
    }
    TVector(double x,double y,double z)
    {
        Vx=x;Vy=y;Vz=z;
    }   
};
struct Plane
{
    double a,b,c,d;
    Plane(double aa,double bb,double cc,double dd)
    {
        a=aa,b=bb,c=cc,d=dd;
    }

    TVector _Normal(double a,double b,double c)
    {   
          a=this->a;
          b=this->b;
          c=this->c;
        TVector D(a,b,c);
         return D;
    };
};

[[it] 本帖最后由 sunkaidong 于 2008-4-29 11:19 编辑 [/it]]

学习需要安静。。海盗要重新来过。。
2008-04-29 11:15
limeng_HOHO
Rank: 2
来 自:上海
等 级:论坛游民
帖 子:49
专家分:50
注 册:2007-7-16
收藏
得分:0 
回复 6# 的帖子
TVector(double x,double y,double z)
    {
        Vx=x;Vy=y;Vz=z;
    }   
是函数原型 _Normal我认为是TVector的一个实例 所以应该可以直接传递参数
因为原型函数已经在TVector结构中定义好了呀

世界并不美丽 然而又因此而美丽
2008-04-29 11:24
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
声明数据类型但是初始化是应该是要交给构造函数处理的..
就好像你声明一个int i;是不能赋值的..要不就会有问题..一般情况下都是把变量交给函数处理...
struct TVector
{
    double Vx;
    double Vy;
    double Vz;
    TVector()
     {
        Vx=Vy=Vz=0;
    }
    TVector(double x,double y,double z)
    {
        Vx=x;Vy=y;Vz=z;
    }   
};
struct Plane
{
  
public:
    double a,b,c,d;
    Plane(double aa,double bb,double cc,double dd):e(a,b,c)
    {
        a=aa,b=bb,c=cc,d=dd;
    }

private:
    TVector e;
   
};

学习需要安静。。海盗要重新来过。。
2008-04-29 12:11
快速回复:求助!!在结构体中使用this指针的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017525 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved