Я добавил класс ns3
и при использовании его я получаю сообщение об ошибке:Повторные ошибки, несмотря на правильное пространство имен
../scratch/seven.cc: In function ‘int main(int, char**)’:
../scratch/seven.cc:102:3: error: ‘RandomAppHelper’ was not declared in this scope
RandomAppHelper source = RandomAppHelper ("ns3::TcpSocketFactory", InetSocketAddress (Ipv4Address ("192.168.1.10"), 10));
^
../scratch/seven.cc:103:3: error: ‘source’ was not declared in this scope
source.SetAttribute ("Delay", StringValue ("Constant:2.5"));
^
Код для этого здесь: https://www.nsnam.org/docs/release/3.3/doxygen/application.html
Я не могу исправить ошибку , Я использовал в коде код namespace
ns3
. Поскольку ошибка «не объявлена в области видимости», я не уверен, как ее исправить.
Вот моя реализация вспомогательного класса (который я использую):
#include "ns3/log.h"
#include "ns3/address.h"
#include "ns3/node.h"
#include "ns3/nstime.h"
#include "ns3/socket.h"
#include "ns3/simulator.h"
#include "ns3/socket-factory.h"
#include "ns3/packet.h"
#include "ns3/uinteger.h"
#include "ns3/trace-source-accessor.h"
#include "ns3/tcp-socket-factory.h"
#include "random-helper.h"
namespace ns3{
RandomAppHelper::RandomAppHelper (std::string protocol, Address remote)
{
m_factory.SetTypeId ("ns3::MpTcpBulkSendApplication");
m_factory.Set ("Protocol", StringValue (protocol));
m_factory.Set ("Remote", AddressValue (remote));
}
void
RandomAppHelper::SetAttribute (std::string name, const AttributeValue &value)
{
m_factory.Set (name, value);
}
ApplicationContainer
RandomAppHelper::Install (Ptr<Node> node) const
{
return ApplicationContainer (InstallPriv (node));
}
ApplicationContainer
RandomAppHelper::Install (std::string nodeName) const
{
Ptr<Node> node = Names::Find<Node> (nodeName);
return ApplicationContainer (InstallPriv (node));
}
ApplicationContainer
RandomAppHelper::Install (NodeContainer c) const
{
ApplicationContainer apps;
for (NodeContainer::Iterator i = c.Begin(); i != c.End(); ++i)
{
apps.Add (InstallPriv (*i));
}
return apps;
}
Ptr<Application>
RandomAppHelper::InstallPriv (Ptr<Node> node) const
{
Ptr<Application> app = m_factory.Create<Application>();
node->AddApplication (app);
return app;
}
}
Этот класс определяется в папке приложений из ns3, который входит через приложения-module.h включают. И в моем коде я включил его в то место, где я использую RandomAppHelper.
Это не похоже на стандартный класс ns3, а скорее на вспомогательный класс, который вы должны определить и реализовать самостоятельно. –
Я добавил немного больше объяснений. Porque downvote? –
@JoachimPileborg, конечно же, я сам определил и сам имплантировал. –