C++ C++;对象引用
我有一段代码:C++ C++;对象引用,c++,object,C++,Object,我有一段代码: 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[]);
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”
正确答案是什么
谢谢没有看到
这个
的定义,我想说你可能想替换void Omplir(Edi)代码>通过无效Omplir(Edi*const)
并相应地修改Omplir
的定义。您对Omplir的声明
void Omplir(Edi);
表示此方法接受一个Edi
对象
C++ >代码> < <代码>是指针。您应该在类中使用它
如果您想让它工作,您应该取消对它的引用:
wmmbid02.Omplir(*this);
标准说明了此指针:
9.3.2此指针[类.此]
在非静态(9.3)成员函数的主体中,关键字this是一个prvalue表达式,其值是调用该函数的对象的地址类X的成员函数中的类型为X*。如果成员函数声明为const,则其类型为const X*,[…]
因此,在您的情况下,您似乎是类Edi
的成员函数,此
应为Edi*
类型,或者定义指向指针的参数void Omplir(Edi)
:
void Omplir(Edi*);
或将此
作为参考传递:
Wmmbid02 wmmbid02;
wmmbid02.Omplir( *this );
return wmmbid02;
但这取决于你到底想做什么。通常我更喜欢尽可能通过引用传递。传递一个Edi
而不是Edi*
。wmmbid02.Omplir(*this)
将清除错误,但可能这并不完全是你想要的。*这个
而不是这个
作为开始。也许是我,但名字很忠实。。。