错误:不匹配'运营商 - '在< temp - 5'

时间:2014-04-09 15:18:10

标签: c++

#include <iomanip>
#include <string>
#include <cstdlib>
#include <iostream>

using namespace std;

class STLstring
{
    private:
        string word;
    public:
    STLstring()
    {
        word = "";
    }
    void setWord(string w);
    string getWord();

};

class EncryptString:public STLstring
{
    private:
        void encrypt();
        void decrypt();
};


/*****************IMPLEMENTATION*******************/

void STLstring::setWord(string w)
{
    void encrypt();
    word = w;
    cout << word;
}

string STLstring::getWord()
{
    void decrypt();
    return word;
}

void EncryptString::encrypt()
{
    string temp = getWord();

    temp = (temp - 5) %26;



    setWord(temp);
}

void EncryptString::decrypt()
{
    string temp = getWord();



    setWord(temp);
}

int main()
{
    string word = "";
    EncryptString EncrptStr;

    cout << "Enter a word and I will encrypt it so that you cannot read it any longer." << endl;
    getline(cin, word);

    cout << "\nHere is the encrypted word..." << endl;
    EncrptStr.setWord(word);

    cout << "\nHere is the decrypted word..." << endl;
    cout << EncrptStr.getWord() << endl;
}

中有1个错误
temp = (temp - 5) %26;

错误说:'temp - 5'中的'operator-'不匹配 我想要做的是一个ceasar密码,我知道我还没有完成密码,但我认为即使我完成它仍会出现错误,我是否应该在课堂上制作一个重载操作符?如果是这样的话?我以为重载只是在两个班级之间。

2 个答案:

答案 0 :(得分:1)

tempstring类型,您正在指定减法。将类型更改为支持减法的类型(如int)并相应更改逻辑,或者为operator-string实施int

答案 1 :(得分:1)

您的变量temp是一个字符串,字符串没有减法。像"hello" - "world"这样的陈述没有意义,因此定义一个通常不是一个好主意。

在你的情况下,你甚至试图从一个字符串中减去一个数字(&#34;你好&#34; - 5),这也没有意义。

如果您想计算某些内容,请使用数字类型(例如intfloatdoublelong)。

查看您的代码我非常确定您想要计算字符串中单个字符数值的内容,以便加密&#39;他们。为此,您必须使用char对字符串char的字符进行操作。类型char是数字类型,因此计算'T'-'A'非常合适,而"T" - "A"没有意义。