使用最新版本的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

您的Type1Type2不相关的陈述必须为假。

下次要在真实的测试用例上保重。

10-08 04:58