2014-06-17 1 views
-4

Ohayou에 선언되어 있지 않습니다.'void beeGenerator :: initialize()'멤버 함수가 클래스

내가 묻기 전에 여러 가지 주제에서이 오류에 대해 읽었지만 직접 해결할 수는 없습니다. 그것에 대해 귀찮게해서 죄송합니다.

내 문제는 : 나는 두 개의 파일이

, 하나는 통화 당과 다른 .H 파일입니다.

내 CPP 파일은 다음과 같습니다

#ifndef __BEE_GENERATOR_H 
#define __BEE_GENERATOR_H 

#include "beeInclude.h" 


class beeGenerator 
{ 
    class sPtr{ 
     bool debug; 
     bool logResults; 
     double beeGenInterval; 
     double sleepTime; 
     int beeLength; 
     int myAddress; 
     int bID; 
     int packetCount; 

     virtual void initialize(); 
     virtual void handleMessage(); 
     virtual void finish(); 
     virtual void launchNewBeeAgents(); 
     int getBID(); 
     void setBID(int id); 

    }; 
}; 

#endif 

과 오류가

protoname/beeGenerator.cc:3:31: error: no ‘void beeGenerator::initialize()’ member function declared in class ‘beeGenerator’ 
void beeGenerator::initialize() 
          ^
protoname/beeGenerator.cc:21:35: error: no ‘void beeGenerator::handleMessage()’ member function declared in class ‘beeGenerator’ 
void beeGenerator::handleMessage() 
           ^
protoname/beeGenerator.cc:49:39: error: no ‘void beeGenerator::launchNewBeeAgents()’ member function declared in class ‘beeGenerator’ 
void beeGenerator::launchNewBeeAgents() 
            ^
protoname/beeGenerator.cc:62:26: error: no ‘int beeGenerator::getBID()’ member function declared in class ‘beeGenerator’ 
int beeGenerator::getBID() 
         ^
protoname/beeGenerator.cc:67:33: error: no ‘void beeGenerator::setBID(int)’ member function declared in class ‘beeGenerator’ 
void beeGenerator::setBID(int id) 
           ^
protoname/beeGenerator.cc:72:27: error: no ‘void beeGenerator::finish()’ member function declared in class ‘beeGenerator’ 
void beeGenerator::finish() 

내가 무엇을 할 수

같습니다

#include "beeGenerator.h" 

void beeGenerator::initialize() 
{ 
    myAddress = par("address"); 
    sleepTime = (double) par("sleepTimeAtStart"); 
    beeGenInterval = (double) par("iaTime"); 
    beeLength = (int) par("beeLength"); 
    bID = 0; 
    packetCount = 0; 

    debug = true; 
    logResults = par("logResults"); 

    const char *statModulePath = (char*) par("statModulePath"); 

    launchNewBees = new cMessage("launchNewBees"); 
    scheduleAt(simTime() + sleepTime, launchNewBees); 
} 

void beeGenerator::handleMessage() 
{ 
    if(dynamic_cast<samplePacket *> (msg) != NULL) 
    { 
     samplePacket *dPacket = dynamic_cast<samplePacket *> (msg); 
     delete dPacket; 
     packetCount++; 

     if((packetCount % packetInterval) == 0) 
     { 
      packetCount = 1; 
      launchNewBeeAgents(); 
     } 
    } 
    else if (msg == launchNewBees) 
    { 
     launchNewBeeAgents(); 
     if(simTime() >= 30.0) 
     { 
      scheduleAt(simTime() + beeGenInterval, launchNewBees); 
     } 
     else 
     { 
      scheduleAt(simTime() + 1.0, launchNewBees); 
     } 
    } 
} 

void beeGenerator::launchNewBeeAgents() 
{ 
    char msgName[70]; 
    sprintf(msgName,"Bee%d : Source%d", bID, myAddress); 
    beeAgent *bMsg = new beeAgent(msgName); 
    bMsg->setBID(bID++); 
    bMsg->setSourceAddress(myAddress); 
    bMsg->setKind(static_cast<int> (NETLAYER_BEE_AGENT)); 
    bMsg->setSourceModule(BEE_GEN_MODULE); 
    bMsg->setLength(BYTE * beeLength); 
    send(bMsg,"toRouter"); 
} 

int beeGenerator::getBID() 
{ 
    return bID; 
} 

void beeGenerator::setBID(int id) 
{ 
    bID = id; 
} 

void beeGenerator::finish() 
{ 
    ev << "*** Module: " << fullPath() << "***" << endl; 
    ev << "Stack allocated:  " << stackSize() << " bytes"; 
    ev << " (includes " << ev.extraStackForEnvir() << " bytes for environment)" << endl; 
    ev << "Stack actually used: " << stackUsage() << " bytes" << endl; 
} 

내 .H 파일은? :(

감사합니다!

+1

"어떻게해야합니까?"컴파일러 오류를 읽습니다. 그리고 C++을 배우려면 좋은 [book] (http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list)을 읽으십시오. 오, 그리고 __BE_GENERATOR_H는 합법적 인 이름이 아닙니다. –

+0

이것은 대답 할만한 가치가 없습니다 ... 사소한 일입니다. 네, 컴파일러의 조언을 더 진지하게 받아 들여야합니다. 'beeGenerator' 클래스에'initialize()'멤버가 선언되어 있습니까? 아니면 더 중첩 된 범위에서 선언 된 멤버입니까? – JorenHeit

+0

@BaummitAugen 내가 틀렸다면 정정 하겠지만, 매크로의/두 배 밑줄로 시작하는 것이 완벽하게 합법적이라고 정의합니까? 물론 포맷은 구현 정의 된 매크로를 위해 예약 되었기 때문에 권고 받지만 불법입니까? – JorenHeit

답변

0

당신이

class beeGenerator 
{ 
    class sPtr{ 
     virtual void initialize_sptr(); 
    } 
    virtual void initialize_bee(); 
} 

당신이 구현에 둥지를 유지할 필요가있다, 그래서 당신은 당신이 잊어 귀하의 경우에는

void beeGenerator::initialize_bee() 
{ 
} 
void beeGenerator::sPtr::initialize_sptr() 
{ 
} 

로 구현해야하는 경우 sPtr::이므로 코드를 예를 들어

void beeGenerator::sPtr::initialize() 
으로 변경하십시오.
관련 문제