Consider the following code.
class SomeClass{};
class AnotherClass
{
public:
SomeClass c1;
SomeClass c2;
SomeClass c3;
const SomeClass* someClassArray[3] = { &c1, &c2, &c3 };
const SomeClass** GetSomeClassArray ()
{
return someClassArray;
}
};
int main ()
{
AnotherClass anotherClass;
const SomeClass** someClassArray = anotherClass.GetSomeClassArray ();
SomeClass* someClass2 = new SomeClass;
someClassArray[0] = someClass2; //This should not be allowed
}
I am declaring the array someClassArray
as const. I am specifying the return type of GetSomeClassArray
as const SomeClass**
and yet, I am still allowed to modify the contents of the array later in the main
function.
I also noticed that adding const specifier to the method as such: const SomeClass** GetSomeClassArray () const
causes an error.
Why is this the case?