#include <iostream>
using namespace std;
class Txtbin {
public:
const static int ERR_EMPTY_IMAGE = 2;
};
class Test1 {
public:
const int ERR_EMPTY_IMAGE = 2;
Test1() = default;
Test1(int x) : ERR_EMPTY_IMAGE{x} {}
};
class Test2 {
public:
const int ERR_EMPTY_IMAGE;
Test2(int x) : ERR_EMPTY_IMAGE{x} {}
};
int main() {
Txtbin a;
int err;
Test1 b;
Test1 b_ouch(9);
Test2 c(5), d(6);
switch(err){
case Txtbin::ERR_EMPTY_IMAGE: // no need for an object
std::cerr << "Error: Image is empty\n" << std::endl;
break;
}
switch(err){
case a.ERR_EMPTY_IMAGE: // but the object doesn't bother
std::cerr << "Error: Image is empty\n" << std::endl;
break;
}
cout << "Sizeof a: "<< sizeof(a) <<endl; // only static but minimum size is 1.
cout << "Sizeof b: "<< sizeof(b) <<endl; // with non static const
cout << "Test2 c ->"<< c.ERR_EMPTY_IMAGE<<" d->"<< d.ERR_EMPTY_IMAGE<<endl;
cout << "Test1 b ->"<< b.ERR_EMPTY_IMAGE<<" b_ouch->"<< b_ouch.ERR_EMPTY_IMAGE<<endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwpjbGFzcyBUeHRiaW4gewpwdWJsaWM6CiAgICBjb25zdCBzdGF0aWMgaW50IEVSUl9FTVBUWV9JTUFHRSAgID0gMjsgICAKfTsKY2xhc3MgVGVzdDEgewpwdWJsaWM6CiAgICBjb25zdCAgaW50IEVSUl9FTVBUWV9JTUFHRSAgID0gMjsgCiAgICBUZXN0MSgpID0gZGVmYXVsdDsgCiAgICBUZXN0MShpbnQgeCkgOiBFUlJfRU1QVFlfSU1BR0V7eH0ge30KfTsKY2xhc3MgVGVzdDIgewpwdWJsaWM6CiAgICBjb25zdCAgaW50IEVSUl9FTVBUWV9JTUFHRTsgICAgCiAgICBUZXN0MihpbnQgeCkgOiBFUlJfRU1QVFlfSU1BR0V7eH0ge30KfTsKCmludCBtYWluKCkgewoJVHh0YmluIGE7CiAgICBpbnQgZXJyOyAKICAgIFRlc3QxIGI7ICAKICAgIFRlc3QxIGJfb3VjaCg5KTsgCiAgICBUZXN0MiBjKDUpLCBkKDYpOyAKICAgIAogICAgc3dpdGNoKGVycil7CiAgICAgICAgY2FzZSBUeHRiaW46OkVSUl9FTVBUWV9JTUFHRTogICAgICAvLyBubyBuZWVkIGZvciBhbiBvYmplY3QKICAgICAgICAgICAgc3RkOjpjZXJyIDw8ICJFcnJvcjogSW1hZ2UgaXMgZW1wdHlcbiIgPDwgc3RkOjplbmRsOwogICAgICAgICAgICBicmVhazsKICAgIH0JCiAgICBzd2l0Y2goZXJyKXsKICAgICAgICBjYXNlIGEuRVJSX0VNUFRZX0lNQUdFOiAgICAgICAgICAgIC8vIGJ1dCB0aGUgb2JqZWN0IGRvZXNuJ3QgYm90aGVyCiAgICAgICAgICAgIHN0ZDo6Y2VyciA8PCAiRXJyb3I6IEltYWdlIGlzIGVtcHR5XG4iIDw8IHN0ZDo6ZW5kbDsKICAgICAgICAgICAgYnJlYWs7CiAgICB9CQogICAgCiAgICBjb3V0IDw8ICJTaXplb2YgYTogIjw8IHNpemVvZihhKSA8PGVuZGw7ICAvLyBvbmx5IHN0YXRpYyBidXQgbWluaW11bSBzaXplIGlzIDEuIAogICAgY291dCA8PCAiU2l6ZW9mIGI6ICI8PCBzaXplb2YoYikgPDxlbmRsOyAgLy8gd2l0aCBub24gc3RhdGljIGNvbnN0IAogICAgY291dCA8PCAiVGVzdDIgYyAtPiI8PCBjLkVSUl9FTVBUWV9JTUFHRTw8IiBkLT4iPDwgZC5FUlJfRU1QVFlfSU1BR0U8PGVuZGw7IAogICAgY291dCA8PCAiVGVzdDEgYiAtPiI8PCBiLkVSUl9FTVBUWV9JTUFHRTw8IiBiX291Y2gtPiI8PCBiX291Y2guRVJSX0VNUFRZX0lNQUdFPDxlbmRsOyAKICAgCglyZXR1cm4gMDsKfQ==