0

我有这段代码:

Wmmbid02 wmmbid02;
wmmbid02.Omplir(this);
return wmmbid02;

和 Wmmbid02.h:

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 Studio,返回和错误,因为无法将“Edi *const”转换为“Edi”。

正确答案是什么???

谢谢

4

3 回答 3

1

您的声明Omplir

void Omplir(Edi);

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

在 C++this中是一个指针。你应该在课堂上使用它。

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

wmmbid02.Omplir(*this);

该标准对this指针进行了说明:

9.3.2 this指针[class.this]

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

所以在你的情况下,你似乎在 class 的成员函数中Edithis应该是 type Edi*

于 2013-09-18T09:14:58.390 回答
0

如果没有看到我的定义,this我会说你可能想要替换void Omplir(Edi);并相应地void Omplir(Edi* const);调整定义Omplir

于 2013-09-18T09:09:14.913 回答
0

将参数定义void Omplir(Edi)为指针:

void Omplir(Edi*);

this或作为参考传递:

Wmmbid02 wmmbid02;
wmmbid02.Omplir( *this );
return wmmbid02;

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

于 2013-09-18T09:16:08.190 回答