C++ Can';无法访问结构中的字符串
第7行-错误:此声明没有存储类或类型说明符。 我很困惑。为什么我不能访问failsafe?原因在于初始化成员,在声明成员时尝试初始化成员C++ Can';无法访问结构中的字符串,c++,visual-c++,C++,Visual C++,第7行-错误:此声明没有存储类或类型说明符。 我很困惑。为什么我不能访问failsafe?原因在于初始化成员,在声明成员时尝试初始化成员 const struct config{ private: std::string file; config() : file(getConfig()) {} public: std::string failsafe = file.substr(file.find("failsafe") + 12
const struct config{
private:
std::string file;
config() : file(getConfig()) {}
public:
std::string failsafe = file.substr(file.find("failsafe") + 12);
failsafe.resize(failsafe.find("\""));
size_t ran, price, expiry;
} *ini;
您的代码有几个问题。我将您的代码添加到MSVC2010中,并添加了一些伪代码(即:getConfig)来测试和修复它
- 几乎在所有情况下,(config())。毕竟,怎么做 否则将访问它以初始化对象。我把建筑工人搬到了公共区域
- 代码(find(),substr())必须位于函数内部。main()、对象的构造函数或某些函数/方法。我将您的代码移到构造函数中
不能在结构声明中调用
substr
或resize
之类的函数。使用构造函数来完成此操作。不能在这样的结构中运行代码。除声明字段外的所有内容都必须在函数内。文件.substr()
行可能无法实现您的目的。如果在字符串中未找到故障保护
,则最好存储查找
的结果,并在执行substr
之前检查是否找到该结果。
const struct config{
private:
std::string file;
config() : file(getConfig()) {
failsafe = file.substr(file.find("failsafe") + 12);
failsafe.resize(failsafe.find("\""));
}
public:
std::string failsafe;
size_t ran, price, expiry;
} *ini;
const struct config{
private:
std::string file;
public:
config() : file(getConfig()) {
failsafe = file.substr(file.find("failsafe") + 12);
failsafe.resize(failsafe.find("\""));
}
std::string failsafe;
size_t ran, price, expiry;
} *ini;