C++运算符重载类和结构
C++ Operator overloading class and a struct
我正在尝试做一些我不完全确定甚至可能的事情。我正在尝试重载一个等于运算符,如下所示:
Class A //Defined somewhere
Struct B{
float bobsAge;
};
B& operator=(A,B){
A.GetAge("bob",B.bobsAge);
return B;
}
Function(getAge){
A Names;
B structNames;
structNames = Names;
}
我知道这可能是不可能的,因为我知道 operator= 用于执行诸如将一个相同类型的对象设置为另一个对象等同的事情。 或者这是可能的,但我做错了什么。
提前谢谢。
operator=
是一个赋值运算符,只能在被赋值的类中被覆盖。所以在你的情况下,它必须在A
内声明。
"等于运算符",即operator==
,用于比较两个对象的相等性。
你可以重载operator=
但它必须是类中的。请参阅 http://en.wikipedia.org/wiki/Operators_in_C_and_C%2B%2B,了解类定义之外的内容。
例如
class foo {
foo& operator=(B b) {
//...
return *this;
};
};
不过,我不确定您要用它做什么。
此外,它是赋值运算符 - 不要将其称为等于运算符。
您要做的是重载赋值运算符 但是,标准方法是提供一个转换构造函数:
class A
{
public:
A(const B& b) { GetAge("bob", b.bobsAge; }
};
然后让隐式转换启动表达式,
例如A a;
B b;
a = b; // Assignment: calls A(const B&), and uses A's default assignment operator
A a2 = b; // Construction: calls A(const B&) and A(const A&)
您可以提供赋值运算符
A& operator=(const B&);
但是只允许从B
到A
的分配,而不是构造,这似乎不直观。
相关文章:
- 在哪里声明结构运算符重载
- 为私有结构定义双参数运算符重载
- 重载嵌套结构/类的流插入运算符
- 逗号在重载 ostream 和 istream 在结构中分开
- 重载运算符>>() 表示未知的输入长度/结构
- 类层次结构中的运算符重载
- 为什么我应该重载 () 运算符以在结构而不是类中priority_queue?
- 具有重载方法的可变参数数据结构
- std::cout 不适用于结构的重载"<<"运算符
- 为什么C++在自定义结构向量时会出现 ostream 重载问题?
- Ho 在标头中声明是结构中的重载运算符?
- 指向结构的指针的运算符重载
- 结构外部的重载运算符
- 无法使用"enable_if"和"is_base_of"将模板函数"operator+"的重载限制到我的类层次结构
- 菱形层次结构中的虚函数重载在 clang 和 gcc 中产生不同的结果
- C++ 无法在 typedef 结构中重载<运算符
- 使用运算符 == 进行结构重载
- 当您可以使用构造函数时,为什么要重载 C++ 类或结构中的 () 运算符(可调用运算符)
- 在结构中重载运算符() C++
- ==运算符使用结构重载