构建 castalia 时出错:重载函数的调用不明确

Error when building castalia : Call of an overloaded function is ambiguous

我已经将 castalia 3.3 导入到 omnet++4.6。但是我在用 make 构建它时遇到了这个错误,所以 CastaliaBin 没有构建,我不能使用 castalia 项目。

src/wirelessChannel/traceChannel/TraceChannel.cc:35:33: 错误:重载“open(cPar&)”的调用不明确

traceFile.open(par("traceFile"));

我不是 C++ 专家,我无法修复它

这是错误定位,然后是open()函数

ofstream & DebugInfoWriter::getStream(void)
{
    if (!theFile.is_open())
        theFile.open(fileName.c_str(), ios::app);
    theFile.setf(ios::left);

    return theFile;
}

void
  open(const char* __s,
   ios_base::openmode __mode = ios_base::out | ios_base::trunc)
  {
if (!_M_filebuf.open(__s, __mode | ios_base::out))
  this->setstate(ios_base::failbit);
else

  this->clear();
  }

这个问题的答案也存在于 Castalia 论坛(Google 组)中。

在 Ubuntu 中使用较新版本的 GCC 编译器时出现错误。别忘了,Castalia 3.3 已经很旧了(2013 年发布)。 一个简单的铸造解决了这个问题。

traceFile.open((const char *)par("traceFile"));

但您不需要更改代码。相反,只需 从 Castalia Github 存储库中获取最新代码。它包含此修复程序以及其他次要修复程序。

始终使用 Castalia Github repository 的最新版本。