In C++, how do you declare a static member function of a class to be const with respect to the static member variables of that class?
Consider the following simple example.
myclass.h:
class myclass
{
myclass()
{
myint = 0;
}
~myclass() { }
int myint;
static int my_static_int;
void foo(const int yourint) const;
static void bar(const int newint );
};
myclass.cpp:
myclass::my_static_int = 0;
void myclass::foo(const int yourint) const
{
if (yourint <= myint + my_static_int)
std::cerr << "yourint <= myint + my_static_int";
else
std::cerr << "yourint > myint + my_static_int";
bar( yourint );
}
void myclass:bar(const int newint)
{
my_static_int = newint;
}
main.cpp
...
myclass A;
A.foo(4);
A.foo(4);
..
The output would be:
yourint > myint + my_static_int
yourint <= myint + my_static_int
Clearly, bar can be used within const member functions to change the static member variables of the class and thus change the result of const member function foo.
Can you declare bar to be const with respect to my_static_int ?
Original code (I only tidied up the formatting):
In this class everything is
private, inaccessible, by default: it is unusable.That is one example why it is so important to post real code.
You then ask:
Yes, but there is no direct syntax for that.
You will have to use the existing language features.
They are adequate to the task.