我想在一个禁止使用 operator&() 的类中声明一个原始类型成员。换句话说:我不希望任何人获取该成员的地址(并可能将其传递给其他类或函数等)
如果不使用包装器类型,这可能吗?
我想在一个禁止使用 operator&() 的类中声明一个原始类型成员。换句话说:我不希望任何人获取该成员的地址(并可能将其传递给其他类或函数等)
如果不使用包装器类型,这可能吗?
将您的成员声明为私有,并且您的 getter 不会返回引用/指针。
它也适用于非原始类(具有复制成本)
class A
{
public:
const A* operator & () const = delete; // pre-require of OP
A* operator&() = delete; // pre-require of OP.
int getMember() const { return member; }
void setMember(int value) { member = value;}
// Other stuff.
private:
int member;
};
您可以将其声明operator&()
为私有,以防止使用&
前缀获取地址,但std::addressof
始终可以用来规避这种情况。无法阻止获取地址,但可以将其作为一种威慑手段。
假设你的班级是 A
把它放在你的班级声明中
A* operator&() = delete;