我有一段代码:
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,返回和错误,因为无法将“Edi *const”转换为“Edi”。
正确的答案是什么??
谢谢
发布于 2013-09-18 09:14:58
你对Omplir的声明
void Omplir(Edi);说这个方法接受一个Edi对象。
在C++中,this是一个指针。你应该在一个类中使用它。
如果你想让它起作用,你应该取消它:
wmmbid02.Omplir(*this);标准是关于this指针的:
9.3.2这个指针class.this 在非静态(9.3)成员函数的主体中,关键字这是一个prvalue表达式,其值是调用该函数的对象的地址。在类X的成员函数中的这种类型是X*。如果成员函数声明为const,则其类型为const *、.
因此,在您的例子中,您似乎是类Edi的成员函数,this应该是Edi*类型的。
发布于 2013-09-18 09:09:14
没有看到this的定义,我想说的是,您可能希望用void Omplir(Edi* const);代替void Omplir(Edi);,并相应地修改Omplir的定义。
发布于 2013-09-18 09:16:08
或者定义指向指针的参数void Omplir(Edi):
void Omplir(Edi*);或者传递this作为引用:
Wmmbid02 wmmbid02;
wmmbid02.Omplir( *this );
return wmmbid02;但这真的取决于你到底想做什么。通常,我喜欢尽可能地传递引用。
https://stackoverflow.com/questions/18868004
复制相似问题