0

我正在创建一个程序,这里是规格:

创建一个对字符串执行各种操作的 CharConverter 类。它应该具有以下两个公共成员函数。

uppercase 成员函数接受一个字符串并返回它的副本,其中所有小写字母都转换为大写。如果一个字符已经是大写字母或者不是字母,它应该被单独留下。

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;
}
4

1 回答 1

1

在主要的开始

int main() {

void properWords(string, int);
void uppercase(string, int);

您声明了另外两个函数,而不是CharConverter. 然后你调用这些函数,而不是你之前定义的函数。

所以编译器(实际上是链接器)抱怨它找不到这些非成员函数。这是真的,它们不存在。

现在您必须决定是否需要上课。在这种情况下,创建一个类对象并调用成员函数。或者跳过类声明并使函数成为自由函数。

于 2017-11-13T00:18:54.523 回答