Я создаю программу вот технические характеристики:
Создайте класс CharConverter, который выполняет различные операции со строками. Для этого он должен иметь следующие две открытые функции-члены.
Функция-член в верхнем регистре принимает строку и возвращает ее копию со всеми строчными буквами, преобразованными в верхний регистр. Если символ уже в верхнем регистре или не является буквой, его следует оставить в покое.
Функция члена ProperWords принимает строку слов, разделенных пробелами, и возвращает ее копию с первой буквой каждого слова, преобразованной в верхний регистр.
Напишите простую программу, которая использует класс. Это должно побудить пользователя ввести строку. Затем он должен вызвать функцию ProperWords и отобразить эту результирующую строку. Наконец, он должен вызвать функцию верхнего регистра и отобразить эту результирующую строку.
Я написал программу без модуляции, чтобы убедиться, что я все правильно преобразовал. Теперь, когда я пытаюсь модулировать, я получаю ошибки, я не знаю, что они означают при компиляции:
вот мой код:
#include<iostream>
#include<string>
#include<vector>
#include<ctype.h>
using namespace std;
class CharConverter {
public:
void uppercase(string, int);
void properWords(string, int);
};
void CharConverter::uppercase(string myString, int s) {
s = myString.length();
for (int i = 0; i <= s; i++) {
myString[i] = toupper(myString[i]);
}
cout << myString << endl;
}
void CharConverter::properWords(string myString, int s) {
for (int i = 0; i <= s; i++) {
myString[i];
myString[0] = toupper(myString[0]);
if (myString[i] == ' ') {
myString[i + 1] = toupper(myString[i + 1]);
}
}
cout << myString << endl;
}int main() {
void properWords(string, int);
void uppercase(string, int);string sentence;
int size;
cout << "Enter a sentence you want converted to all uppercase letters and
set up with proper uppercase letters." << endl;
getline(cin, sentence);
size = sentence.length();
properWords(sentence, size);
uppercase(sentence, size);
return 0;
}
В начале основного
int main() {
void properWords(string, int);
void uppercase(string, int);
вы объявляете два Другой функции, а не часть CharConverter
, И затем вы вызываете эти функции, а не те, которые вы определили ранее.
И поэтому компилятор (на самом деле компоновщик) жалуется, что не может найти эти функции, не являющиеся членами. И это правда, их не существует.
Теперь вы должны решить, нужен ли вам класс. В этом случае создайте объект класса и вызовите функции-члены. Или пропустите объявление класса и сделайте функции свободными функциями.
Других решений пока нет …