首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++对象引用

C++对象引用
EN

Stack Overflow用户
提问于 2013-09-18 09:04:43
回答 3查看 507关注 0票数 0

我有一段代码:

代码语言:javascript
复制
Wmmbid02 wmmbid02;
wmmbid02.Omplir(this);
return wmmbid02;

以及Wmmbid02.h:

代码语言:javascript
复制
class Wmmbid02: public Idoc {

public:
    Wmmbid02();
    //void EscriureFitxer();
    void Omplir(Edi);

private:
    Segment crearSegment(string a[], string b[]);
    Info crearInfo(string);
    //virtual void LlegirFormat(string);
};

Visual,返回和错误,因为无法将“Edi *const”转换为“Edi”。

正确的答案是什么??

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-09-18 09:14:58

你对Omplir的声明

代码语言:javascript
复制
void Omplir(Edi);

说这个方法接受一个Edi对象。

在C++中,this是一个指针。你应该在一个类中使用它。

如果你想让它起作用,你应该取消它:

代码语言:javascript
复制
wmmbid02.Omplir(*this);

标准是关于this指针的:

9.3.2这个指针class.this 在非静态(9.3)成员函数的主体中,关键字这是一个prvalue表达式,其值是调用该函数的对象的地址。在类X的成员函数中的这种类型是X*。如果成员函数声明为const,则其类型为const *.

因此,在您的例子中,您似乎是类Edi的成员函数,this应该是Edi*类型的。

票数 1
EN

Stack Overflow用户

发布于 2013-09-18 09:09:14

没有看到this的定义,我想说的是,您可能希望用void Omplir(Edi* const);代替void Omplir(Edi);,并相应地修改Omplir的定义。

票数 0
EN

Stack Overflow用户

发布于 2013-09-18 09:16:08

或者定义指向指针的参数void Omplir(Edi)

代码语言:javascript
复制
void Omplir(Edi*);

或者传递this作为引用:

代码语言:javascript
复制
Wmmbid02 wmmbid02;
wmmbid02.Omplir( *this );
return wmmbid02;

但这真的取决于你到底想做什么。通常,我喜欢尽可能地传递引用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18868004

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档