gpt4 book ai didi

c++ - 在类中为结构重载 operator=

转载 作者:搜寻专家 更新时间:2023-10-31 01:07:35 25 4
gpt4 key购买 nike

我们有以下内容:(伪)

class MyClass
{
private:
struct MyStruct{
MyStruct operator=(const MyOtherStruct& rhs);
int am1;
int am2;
};
};

我们想重载 MyClass.cpp 中的 = 运算符来执行如下操作:

MyStruct&
MyStruct::operator=(const MyOtherStruct& rhs)
{
am1 = rhs.am1;
am2 = rhs.am2;
}

但是,它不想编译。我们收到类似于

的错误

"missing ; before &"

"MyStruct must be a class or namespace if followed by ::"

这里有什么我想念的概念吗?

最佳答案

您需要将 MyStructoperator= 移动到结构声明主体中:

class MyClass
{
private:
struct MyStruct{
int am1;
int am2;

MyStruct& operator=(const MyOtherStruct& rhs)
{
am1 = rhs.am1;
am2 = rhs.am2;
return *this;
}
};
};

或者如果因为 MyOtherStruct 不完整或不想使类声明困惑而无法实现:

class MyClass
{
private:
struct MyStruct{
int am1;
int am2;

MyStruct& operator=(const MyOtherStruct& rhs);
};
};

inline MyClass::MyStruct& MyClass::MyStruct::operator=(const MyOtherStruct& rhs)
{
am1 = rhs.am1;
am2 = rhs.am2;
return *this;
}

关于c++ - 在类中为结构重载 operator=,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19170564/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com