Запуск стандартной установки Ubuntu 11.10 с последней версией NetBeans.У меня что-то похожее на следующее:
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 он компилируется без проблем.Я не знал, что это можно сделать, так как я впервые сталкиваюсь с этим делом.Я снова прошу прощения за то, что потратил впустую ваше время, и я ценю, что вы пытаетесь мне помочь.