我有这段代码:
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'。
正确答案是什么?
谢谢
最佳答案
您对Omplir
的声明
void Omplir(Edi);
表示此方法采用
Edi
对象。在C ++中,
this
是一个指针。您应该在一个类中使用它。如果您希望它起作用,则应取消引用它:
wmmbid02.Omplir(*this);
该标准说明了
this
指针:9.3.2 this指针[class.this]
在非静态(9.3)成员函数的主体中,关键字this是一个prvalue表达式,其值是为其调用该函数的对象的地址。在类X的成员函数中,此类型为X *。如果成员函数被声明为const,则其类型为const X *,[...]
因此,在您的情况下,您似乎位于类
Edi
的成员函数中,而this
的类型应为Edi*
。关于c++ - C++对象引用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18868004/