I was working on a class :
#include <iostream>
#include <list>
using namespace std;
class Int{
list <int64_t> data;
bool sign;
public:
Int(int64_t val = 0) : sign(false) {
cout << "Int(int) called\n";
}
Int(const char* str): sign(false) {
cout << "Int(const char* called)\n";
}
};
int main(){
Int a = "328739"; // line 1, ok
Int a2 = "ehfjhs"; // line 2, ok
Int a3 = 4338974; // line 3, ok
Int a4 = 0; //line 4, Issue
return 0;
}
Everything works fine, except line no 4.
As soon I do Int a4 = 0;, the constructor Int(const char* str) is called, as 0 is equivalent to NULL. But I want Int(int64_t val = 0) to be called instead.
A simple fix I could make was doing Int a4 = int(0); that is ok on a side. But I want to make it flexible, so 0 triggers Int(int64_t val = 0) only.