私有變量我從下面的程序出現以下錯誤:使用的朋友來訪問模板類
使用未聲明的標識符「價值」
爲什麼呢?而且,如何使用朋友課程修復它?
在此先感謝。
template <typename T>
class F2 : public F1<T>
{
public:
F2(T o) : F1<T>(o) {}
void fun() {
std::cout << value << std::endl;
}
};
template <typename T>
class F1
{
public:
template <typename U>
friend class F2;
F1(T o) : value(o) {}
protected:
T value;
};
int main()
{
F2<int> f(3);
}
這是你的實際代碼? 'F2'從你的代碼示例中的**後面的'F1'派生而來。 – 2012-07-05 23:35:27
是的,否則它會抱怨朋友不是精心製作的類型。 – 2012-07-05 23:44:13
@NiallC:推測上面有一個前向聲明。只有在模板被使用後才能使用body(在main()'內部命名'F2') –
2012-07-06 00:20:19