我遇到了一个奇怪的问题.当我尝试编写一个返回指向子类的指针的函数时,我交换了该子类的不同实例,我得到"错误C2106:'=':左操作数必须是l值"错误.
问题在于one->getMe() = two;:
class subClass{};
class someClass{
public:
subClass * pointer;
someClass(){
pointer = new subClass;
}
subClass * getMe(){
return pointer;
}
};
int main(){
someClass * one = new someClass;
subClass * two = new subClass;
one->getMe() = two;
}
Run Code Online (Sandbox Code Playgroud)
我对c ++有点新意,所以问题可能很简单.任何帮助深表感谢.
从函数返回的指针是对象中指针的副本.这是暂时的,你无法分配给它.即使你可以分配它,它也没有用,因为它不再连接到你对象中的指针.如果希望能够在从函数返回后指定对象的指针,则希望通过引用返回指针.
subClass *& getMe() {
return pointer;
}
Run Code Online (Sandbox Code Playgroud)
您还应该考虑添加一个const重载,以便处理const对象.它可能看起来像这样:
subclass * const & getme() const {
return pointer;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
181 次 |
| 最近记录: |