Я скорее парень на C, но сейчас я работаю над проектом C ++.Вот почему я немного запутался:
у нас есть такое наследование:
Node-> MultiNode-> RoundAbout
Теперь немного кода (для простоты я пропустил почти всекроме конструкторов):
class MultiNode : public sim_mob::Node {
public:
MultiNode(int x, int y) : Node(x, y) {}
...
}
и
class Roundabout : public sim_mob::MultiNode {
public:
Roundabout() : MultiNode() {}
}
Как видите, конструктор Roundabout () вызывает конструктор MultiNode () без аргументов, в то время как MultiNode имеет только один конструктор с 2args:
MultiNode (int x, int y)
Возможен ли такой сценарий?что такое расширение, пожалуйста?
Этот код хорошо компилируется в своем первоначальном месте, но когда я скопировал папку в область тестирования, чтобы начать редактирование, я получаю эту ошибку (что для меня разумно): ошибка: нет подходящей функции для вызова 'sim_mob :: MultiNode :: MultiNode ()
Нет другого аналогичного файла или класса, который может запутаться.
ошибка для вашей справки:
~/workspace/parser5/geospatial$ make
Scanning dependencies of target driver
[ 33%] Building CXX object CMakeFiles/driver.dir/geo5-pskel.cxx.o
In file included from /home/vahid/workspace/parser5/geospatial/geo5-pskel.hxx:134:0,
from /home/vahid/workspace/parser5/geospatial/geo5-pskel.cxx:39:
/home/vahid/workspace/parser5/geospatial/Roundabout.hpp: In constructor ‘sim_mob::Roundabout::Roundabout()’:
/home/vahid/workspace/parser5/geospatial/Roundabout.hpp:34:27: **error: no matching function for call to ‘sim_mob::MultiNode::MultiNode()’**
/home/vahid/workspace/parser5/geospatial/Roundabout.hpp:34:27: note: candidates are:
/home/vahid/workspace/parser5/geospatial/MultiNode.hpp:42:2: note: sim_mob::MultiNode::MultiNode(int, int)
/home/vahid/workspace/parser5/geospatial/MultiNode.hpp:42:2: note: candidate expects 2 arguments, 0 provided
/home/vahid/workspace/parser5/geospatial/MultiNode.hpp:40:7: note: sim_mob::MultiNode::MultiNode(const sim_mob::MultiNode&)
/home/vahid/workspace/parser5/geospatial/MultiNode.hpp:40:7: note: candidate expects 1 argument, 0 provided
make[2]: *** [CMakeFiles/driver.dir/geo5-pskel.cxx.o] Error 1
make[1]: *** [CMakeFiles/driver.dir/all] Error 2
make: *** [all] Error 2
спасибо