gpt4 book ai didi

c++ - 非静态成员的无效使用

转载 作者:太空宇宙 更新时间:2023-11-03 10:41:49 28 4
gpt4 key购买 nike

刚开始学习一些 cpp 并开始使用这些东西:

#include <string>

using std::string;

class Vigenere{
public:
Vigenere(string key, string alphabet = "abcdefghijklmnopqrstuvwxyz");
string encode(string message, string key = _key, string alphabet = _alphabet);
string decode(string message, string key = _key, string alphabet = _alphabet);


private:
string _alphabet;
string _key;
};

在尝试编译时显示“10 [错误] 无效使用非静态数据成员‘Vigenere::_key’”;

第 10 行是字符串键;

那么,有没有办法让我可以分别为每个对象使用这些变量,同时将它们用作默认参数?

最佳答案

据我所知,这是不可能的。

但是你可以这样做:

class Vigenere{
public:
Vigenere(string key, string alphabet = "abcdefghijklmnopqrstuvwxyz");
string decode(string message, string key, string alphabet);
string decode(string message, string key)
{
return decode(message, key, _alphabet);
}
string decode(string message)
{
return decode(message, _key, _alphabet);
}

// and same for encode


private:
string _alphabet;
string _key;
};

它需要更多的源代码行,但应该为类的用户提供相同的界面,即

someVigenere.decode("myMessage");          // Use key, alphabet from the object instance
someVigenere.decode("myMessage", "myKey"); // Use alphabet from the object instance
someVigenere.decode("myMessage", "myKey", "myAlphabet"); // Pass all

关于c++ - 非静态成员的无效使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34403697/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com