Alf*_*aix 1 c++ oop compiler-errors
刚开始学习一些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;
};
Run Code Online (Sandbox Code Playgroud)
在尝试编译时说"10 [错误]无效使用非静态数据成员'Vigenere :: _ key'";
第10行是字符串Key;
那么,是否有一种方法可以实现它,以便我可以将这些变量分别用于每个对象,同时将它们用作默认参数?
据我所知,这不是直接可能的.
但你可以这样做:
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;
};
Run Code Online (Sandbox Code Playgroud)
它需要更多的源代码行,但应该为该类的用户提供相同的接口,即
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
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
266 次 |
最近记录: |