使用最新版本的NetBeans運行Ubuntu 11.10的默認安裝。我有類似以下內容:爲什麼編譯器不顯示這些返回類型的錯誤?
class MyClass {
public:
Type1 RunAlgo();
private:
Type2 Run();
}
Type1 MyClass::RunAlgo() {
//additional code
return Run();
}
Type2 Run() {
//additional code
Type2 obj;
return obj;
}
Type1和Type2是完全無關的。我在編寫Run()方法時,通過在返回類型中輸入一個拼寫錯誤而驚訝於編譯它。我只是想知道爲什麼這不會返回一個錯誤,只是編譯好嗎?我錯過了什麼?
編輯:新樣本。這確實會產生一個獨立項目的錯誤。似乎無法發現爲什麼真正的項目確實會編譯。
class Node { };
//only difference here is that in my code I have a custom comparer
typedef map<Node*, map<Node*, double> > Network;
class HMM {
Network _network;
};
class Algorithm {
public:
HMM RunAlgo();
private:
Network _network;
Network Run();
};
HMM Algorithm::RunAlgo() {
return Run();
}
Network Algorithm::Run() {
return _network;
}
EDIT2:
我爲我的先天存在缺陷的問題,例如道歉。我將來會更加小心地舉例說明。我一直工作了10多個小時,失去了重點。以下示例重現了我的情況:
#include <map>
using std::map;
class Node {
};
typedef map<Node*, map<Node*, double> > Network;
class HMM {
public:
HMM(const Network& network) {};
Network _network;
};
class TestClass {
public:
HMM RunAlgo(int x, int y);
private:
Network _network;
Network Run();
};
HMM TestClass::RunAlgo(int x, int y) {
return Run();
}
Network TestClass::Run() {
return _network;
}
向HMM類中添加該特定構造函數後,其編譯時沒有問題。我不知道這是可以做到的,因爲這是我第一次遇到這種情況。我再次道歉,如果我浪費了你的時間,我感謝你試圖幫助我。
是「一些參數」和「一些參數」的錯字?或缺少分號?他們是問題的一部分嗎?請出示您的_real_測試用例,以便我們不必浪費寶貴的時間猜測。 –
我的錯誤。將編輯出一些參數。他們對案件並不重要。我對這種混亂表示抱歉。 – Morat
也許'Type1'和'Type2'不像你想象的那樣無關。請發佈他們的聲明(至少是他們的構造函數和賦值運算符) – Mat