gpt4 book ai didi

c++ - C++ 中的点属性访问

转载 作者:可可西里 更新时间:2023-11-01 18:11:12 29 4
gpt4 key购买 nike

我真的是 C++ 的新手,让我真正难过的第一件事是如何编写一个可以使用点表示法获取属性的 getter/setter。

例如,代替:

myObj.getAlpha();

会是

myObj.alpha;

在 C++ 中使用这样的点符号是不受欢迎的,还是设置起来很麻烦?我很难找到不完全超出我理解范围的示例,因此非常感谢任何指导!

最佳答案

您实际上可以为字段实现 getter 和 setter,例如

myObj.alpha

但这很难设置并且需要代理类。
这样做的方法是:

template<typename T>
class SetterProxy
{
T *m_T;
public:
SetterProxy(T &property) : m_T(&property) { }
SetterProxy(const SetterProxy&) = delete;
SetterProxy operator =(const SetterProxy&) = delete;
operator T&()
{
return *m_T;
}
T &operator =(T &other)
{
*m_T = other;
return *m_T;
}
}
class MyClass
{
int m_alpha;
public:
SetterProxy<int> alpha;
MyClass() : alpha(m_alpha) { }
}

关于c++ - C++ 中的点属性访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8394428/

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