В этом примере из книги Роберта Лафора C++ автор не использовал ключевое слово const, однако попытка выполнить тот же код в Visual Studio 2017 приводит к ошибкам, перечисленным ниже. Не знаю, ошибся ли здесь автор. В конечном счете, добавление ключевого слова const исправило ситуацию для меня.
Вот ошибки, если они помогут: 1- E0415 не существует подходящего конструктора для преобразования из "const char [5]" в "String"
2- «инициализация»: невозможно преобразовать из «const char [5]» в «String»
#include <iostream>
#include <string.h>
#include <stdlib.h>
using namespace std;
class String {
/*
.
.
.
*/
String(const char s[]) { //Please note that actually there is no const keyword in the book. I've just put it in there.
strcpy_s(str, s);
}
/*
.
.
.
*/
};
int main() {
String s1 = "hey";
}
Почему я должен использовать константу и почему автор пропустил эту константу (это сделано намеренно или к тому времени, когда он писал эту книгу, это было нормально?)?
strcpy_s()
? Хотя в необязательном и ненавистном приложении k стандарта C есть еще один аргумент, в стандарте C++ его нет. Кроме того, имейте в виду, чтоusing namespace std;
выходит за рамки дурного тона, и может быть потенциально оправдано только тем, что автору приходится угождать редактору по размеру, чтобы вообще быть опубликованным. - person Deduplicator   schedule 11.04.2018