В този пример, от книгата C++ на Robert Lafore, авторът не е използвал ключова дума 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