C ++函数调用静态函数的段错误

时间:2013-12-02 06:32:39

标签: c++ function static header segmentation-fault

我在类中有这样的标题,我想在同一个类的构造函数中使用该函数作为静态函数调用:

class JsonReader {
   public:

   /// functions implementation including constructor and what not

   static string encrypt(const string& str_in, const string& key, const string& iv) {
       string str_out;
       // implementation of the function
       return str_out;
   }

}

现在在构造函数中,它在这行代码上失败了:

string tmp = encrypt(text, key, NULL);

text& key是有效的字符串。我还验证了如果我直接将函数体中的代码复制到构造函数中,函数的实现是正确的。所以唯一的问题应该是在构造函数的头部或函数调用的接口处。

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

这是因为您将NULL传递给了const std::string &的参数。传递NULL将导致std::string临时NULL的构建,这意味着您最终调用的构造函数需要非null {{1 }}。我猜你实际上并没有在你的实现中使用const char *,这就是为什么当你手动内联实现时,问题就消失了。