构建 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 的最新版本。
我已经将 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 的最新版本。