按位和 C++ 重载为非成员函数
Overloading bitwise & c++ as non-member function
尝试将 bit 和 c++ 中的重载为非成员函数
myClass.h
class myClass
{
public:
myClass(double);
void setSomeValue(double);
double getSomeValue() const{
return someValue;
}
/*...more methods...*/
private:
double someValue;
};
我的班级.cpp
myClass::myClass(double someValue){
setSomeValue(someValue);
}
myClass::setSomeValue(double someValue){
this->someValue = someValue;
}
double operator&(myClass &lhs, myClass &rhs){
return lhs.getSomeValue() * rhs.getSomeValue();
}
有人告诉我,我应该能够通过类getter访问类私有成员,从而拥有一个未声明为朋友的非成员函数。但是当我尝试时:
int main(){
myClass A(0.1);
myClass B(0.1);
double test = A & B;
}
我只是收到一条错误消息,说没有运算符"&"匹配这些操作数。我怎样才能做到这一点/我做错了什么?
我猜你没有在你的主程序中包含你的 & 运算符的声明。尝试放置
double operator&(myClass &lhs, myClass &rhs);
在您的 myClass.h 文件中。
这是您的代码示例的固定版本(不过我无法在任何阶段重现no operator "&"matches these operands
错误消息):
myClass.h
class myClass
{
public:
myClass() : someValue() {}
double getSomeValue() const{
return someValue;
}
//...more methods...//
private:
double someValue;
};
// ***********************************************************************************
// * You need to make that global operator override visible through the header file: *
// ***********************************************************************************
inline double operator&(myClass &lhs, myClass &rhs){
return lhs.getSomeValue() * rhs.getSomeValue();
}
main.cpp
#include <iostream>
#include "myClass.h"
int main(){
myClass A;
myClass B;
double test = A & B;
std::cout << test << std::endl;
}
现场演示
相关文章:
- 对RValue对象调用的LValue ref限定成员函数
- 为什么使用 "this" 指针调用派生成员函数?
- 将公共但非静态的成员函数与ALGLIB集成
- 使用指向成员的指针将成员函数作为参数传递
- 将重载的成员函数传递给函数模板
- 我不小心调用了一个没有自己类对象的成员函数.但这是怎么回事呢
- 如何在C++中使用非静态成员函数作为回调函数
- C++错误C2600:无法定义编译器生成的特殊成员函数(必须首先在类中声明)
- 关联容器的下界复杂性:成员函数与非成员函数
- 在 C++ 中用派生类型重写成员函数
- 链表的泛型函数remove()与成员函数remove)
- 如何将lambda作为模板类的成员函数参数
- constexpr构造函数需要常量成员函数时出现问题
- 将自由函数绑定为类成员函数
- 区分非成员函数和头文件中的成员函数
- 如何从子成员函数修改父公共成员变量
- 保留对其他类的成员函数的引用
- 在运算符重载定义中使用成员函数(const错误)
- 内联如何影响模块接口中的成员函数
- 将成员函数指针作为参数传递给模板方法