使用最新版本的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;
}
编辑2:
对于我提出的问题和榜样,我深表歉意。将来,我会更加小心一些示例。我已经工作了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类后,它可以毫无问题地进行编译。我不知道这可以做,因为这是我第一次遇到这种情况。再次致歉,如果您浪费了您的时间,也感谢您的帮助。
最佳答案
在非测试用例中纠正错误后,my compiler does error out。
您的Type1
和Type2
不相关的陈述必须为假。
下次要在真实的测试用例上保重。