2010-06-03 87 views
2

人跡罕至我有這樣成員是從朋友類

#include "Output/PtPathWriter.h" 
// class PtPathWriter // I've also tried forward declaring the friend class 

// leg data is a class designed to hold data for a single leg. 
class PtPathLeg 
{ 
    friend class PtPathWriter; // doesn't work 
    //friend void PTPathWriter::writeToFile(string fileName, PtPath* path); // works 

protected: 
    vector<map<int, shared_ptr<BoardingStopAlternative>>> m_boarding_stop_alternatives; 
    // some other stuff 
} 

的聲明不過我從PtPathWriter說

PtPathWriter.cpp(44): error #308: member "PtPathLeg::m_boarding_stop_alternatives" (declared at line 79 of "../include/Paths/PtPathLeg.h") is inaccessible 
1> path->m_leg_data.at(legnr).m_boarding_stop_alternatives.at(stopId); 

錯誤有趣的是,如果我使用備用friend聲明(指定方法明確)它的工作?任何想法,爲什麼他們不同?

使用英特爾C++編譯器11.1.065 btw。

+0

在PtPathLeg之前是否聲明瞭PtPathWriter?也許你需要添加一個前向聲明。 – jopa 2010-06-03 09:34:32

+5

我在註釋中看到了一個細微的拼寫錯誤,請注意PTPathWriter中的大寫T。什麼是可能性? – 2010-06-03 09:43:59

+0

漢斯,將該評論轉移到答案中,以便我可以將其標記爲已接受!我現在覺得自己多麼愚蠢:) – 2010-06-03 10:05:56

回答

0

您的小t應在P**t**PathWriter的首都T