gpt4 book ai didi

c++ - 在静态常量成员上调用特定方法

转载 作者:行者123 更新时间:2023-11-27 23:04:26 26 4
gpt4 key购买 nike

想法是这样的:我有一个类,它有一些成员变量,比如 x。此类还有一个方法 A(),它不修改成员变量,但返回有关它们的信息。还有一个 B() 方法,它确实修改了成员变量。所以基本上,这是设置:

class Class
{
int x;
Class(int x) : x(x) { }

int A() { return x; /* info about x */ }
void B() { x++; /* updates x! */ }
}

到目前为止一切顺利。但是现在我想要这个类的一些特殊版本,将在整个项目中使用,我希望它有一组特定的成员变量,比如 x = 3。我的想法是添加一个 const static Class mySpecialCase 成员到Class,并在必要时引用Class::mySpecialCase

但是,问题是我需要在此对象上调用 A() 来获取一些信息,但不希望调用 B()这个对象,因为它会修改 x,这会影响“特殊情况”的所有 future 使用。

关于如何解决这个问题有什么想法吗?

最佳答案

调用 Class::mySpecialCase.B() 已经是非法的,因为 mySpecialCaseconstB() 不是 const 成员。您只需要通过使 A() 成为 const 成员函数来调用 A():

class Class
{
int x;
public:
Class(int x) : x(x) { }

static const Class mySpecialCase;

int A() const { return x; /* info about x */ }
void B() { x++; /* updates x! */ }
};

// In class.cpp:
const Class Class::mySpecialCase{3};

关于c++ - 在静态常量成员上调用特定方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24596143/

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