无法在struct中访问字符串

时间:2014-04-13 02:14:50

标签: c++ visual-c++

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;

第7行 - 错误:此声明没有存储类或类型说明符。 我很困惑。为什么我无法访问故障安全?

2 个答案:

答案 0 :(得分:1)

原因Constructors用于初始化成员,您在宣布成员时会尝试尝试。

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;

答案 1 :(得分:1)

您的代码存在一些问题。我把你的代码,加上一些虚拟代码(即:getConfig)添加到MSVC2010中进行测试和修复。

  • 几乎在所有情况下,Constructors(config())have to be public。毕竟,怎么样 否则将访问它来初始化对象。我将构造函数移动到Public区域。
  • 代码(find(),substr())必须位于函数内。 main(),对象的构造函数或某个函数/方法。我将您的代码移动到构造函数中。
  • 我没有添加任何东西来处理错误(例如找不到你要查找的子字符串),但你可以考虑添加一些代码来处理这些情况。

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;