size_t и const char* s могут быть эквивалентны для компилятора в некоторых случаях. Например:
class my_class {
char* data;
size_t size;
public:
my_class(const char* s) {
size = strlen(s);
data = new char[size + 1];
strcpy(data, s);
}
my_class(size_t sz) : size(sz) {
data = new char[size];
}
~my_class() {
delete[] data;
}
// Другие методы...
};
теперь, если написать
my_class a = "fghd"; // Использует конструктор с const char* s
my_class b(1); // использует конструктор c size_t
то всё работает хорошо, однако
my_class b(0); //компилятор не может выбрать правильный конструктор
как это можно исправить адекватным способом?
во дела
Как насчет такого?
Явно говорим "Используй конструктор в резолве только если оно целочисленное"
спасибо не знал про такие конструкции, пока я этим воспользуюсь
my_class b((size_t)0);
это конечно классно, но я не сильно хочу в своём коде задумыватся об током
Вместо конструкторов использовать функции/методы с разными названиями.