char* Text[16] = { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N"};
struct Test{
byte TextID;
} Test;
void TextOverrider(char* Text){
Test.TextID < 14 ? Test.TextID++ : Test.TextID = 0;
Text[Test.TextID] = { Text };
}
и в моей главной
void main(){
printf("%s\n\n", Text[0]);
TextOverrider("Hello");
TextOverrider("Whats");
TextOverrider("Up");
TextOverrider("Dude");
TextOverrider("Playing");
TextOverrider("Xbox");
TextOverrider("Lol");
TextOverrider("XD");
TextOverrider("5EVR");
TextOverrider("Anyonmoose");
TextOverrider("Hoora");
}
Я получаю ошибку в Text[Test.TextID] = { Text };
в моем тексте над райдером. Я не уверен, как это исправить, я все перепробовал.
У вас есть массив из 16 указателей. Это необычно (в C ++ вы, вероятно, захотите использовать std::string
), но не является непосредственной причиной вашей проблемы. Затем вы пытаетесь voodoo: вы передаете аргумент функции также названный Text
и ожидать, что компилятор угадает, какой из двух Text
Ты имеешь в виду? Не работает, аргумент скрывает глобальный. Переименуйте аргумент функции.
Вы хотите назначение, но вы написали инициализацию.
Напишите это вместо:
void TextOverrider(char* NewText){
Test.TextID < 14 ? Test.TextID++ : Test.TextID = 0;
Text[Test.TextID] = NewText;
}
редактировать
Имейте в виду, что Text
это указатели массива, которые инициализируются с адресами char
массив литералов. Назначение
Text[Test.TextID] = NewText;
устанавливает новый указатель Вы несете ответственность за то, что адрес, переданный вашей функции, указывает на char
массив, который не будет изменен после вызова. Вы не копируете строку, а только указатель.
У вас есть пара ошибок.
Инициализация вместо назначения.
Написать Text[Test.TextID] = Text;
вместо Text[Test.TextID] = { Text };
У вас есть глобальная переменная с тем же именем, что и аргумент функции:
char* Text[16] = { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N"};
void food(char* Text){
Text[Test.TextID] = Text;
}
Таким образом, глобальная переменная невидима, и вы пытаетесь назначить char*
к элементу char
массив, который является char
Вы также можете использовать оператор глобальной области видимости ::
в результате чего ::Text[Test.TextID] = Text;
В C++
ваш main
должен быть типа int
, так void main();
является недействительным. Вы должны использовать int main();
Обычно, когда вы используете литералы символов, которые вы хотите использовать std::string
или по крайней мере const char*