2016-08-05 3 views
-2

Я добавил класс 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

Я не могу исправить ошибку , Я использовал в коде код namespacens3. Поскольку ошибка «не объявлена ​​в области видимости», я не уверен, как ее исправить.

Вот моя реализация вспомогательного класса (который я использую):

#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.

+0

Это не похоже на стандартный класс ns3, а скорее на вспомогательный класс, который вы должны определить и реализовать самостоятельно. –

+0

Я добавил немного больше объяснений. Porque downvote? –

+0

@JoachimPileborg, конечно же, я сам определил и сам имплантировал. –

ответ

0

Я думаю, вы забыли добавить свои имена файлов (я думаю, вы создали RandomAppHelper) в файле wscript.py, расположенном в папке приложения. Надеюсь, что это сработает. Bye

Смежные вопросы