我想從C++第2卷思維進行以下鍛鍊,巫婆說:模板練習題
在下面的代碼的類不可比不具有運算符=()。爲什麼類HardLogic的存在會導致編譯錯誤,但SoftLogic不會呢?
#include <iostream>
using namespace std;
class NonComparable {};
struct HardLogic {
NonComparable nc1, nc2;
void compare()
{
return nc1 == nc2;
}
};
template<class T>
struct SoftLogic {
NonComparable nc1, nc2;
void noOp() {}
void compare()
{
nc1 == nc2;
}
};
int main()
{
SoftLogic<NonComparable> l;
l.noOp();
return 0;
}
1)HardLogic ::比較返回void但函數試圖O返回一個INT /布爾。
2)SoftLogic也有一些奇怪的東西(對我來說):nc1 == nc2。
3)練習說關於operator =(),但在代碼中使用operator ==()。
是否有錯誤?我發現在這樣一本書的代碼中出現如此多的錯誤是很奇怪的,所以我錯過了什麼?有沒有人遇到過這個練習?
我有gcc編譯器,我總是得到一個錯誤,即使我評論HardLogic類 – Kobe 2011-05-05 16:59:27