我有一個明確的和模板的問題:使用明確的使用模板,C++
template<class T>
class A {
class A_Impl {
T var;
public:
explicit A_Impl(T var1) : var(var1), version(1)
{
}
A_Impl(const A_Impl& a) : var(a.var), version(1)
{
}
const A_Impl& operator=(const A_Impl& a)
{
var=a.var;++version;return *this;
}
operator T() const { return var; }
friend class A<T>;
};
A_Impl a;
public:
A(T var): a(var)
{
}
A_Impl& get() { return a; }
};
void main() {
A<int> a1(5);
cout<<"a1 = "<<a1.get()<<endl;
a1.get()=7;
cout<<"a1 = "<<a1.get()<<endl;
a1=13;
cout<<"a1 = "<<a1.get()<<endl;
}
我得到的連接錯誤在a1.get()=7;
它說沒有運營商「=」這些操作數相匹配
另外,如果我走明確的話它會編譯,但我不明白a1.get()
函數和a1=13;
之間的區別,它甚至在明確的情況下也能正常工作。
http://stackoverflow.com/questions/121162/what-does -the-明確的關鍵字,在-C均值 – Gasim