我的問題很簡單,但我被卡住了。我如何從基類中選擇所需的構造函數?繼承和從基類中選擇構造函數
// node.h
#ifndef NODE_H
#define NODE_H
#include <vector>
// definition of an exception-class
class WrongBoundsException
{
};
class Node
{
public:
...
Node(double, double, std::vector<double>&) throw (WrongBoundsException);
...
};
#endif
// InternalNode.h
#ifndef INTERNALNODE_H
#define INTERNALNODE_H
#include <vector>
#include "Node.h"
class InternalNode : public Node
{
public:
// the position of the leftmost child (child left)
int left_child;
// the position of the parent
int parent;
InternalNode(double, double, std::vector<double>&, int parent, int left_child) throw (WrongBoundsException);
private:
int abcd;
};
#endif
// InternalNode.cpp
#include "InternalNode.h"
#define UNDEFINED_CHILD -1
#define ROOT -1
// Here is the problem
InternalNode::InternalNode(double a, double b, std::vector<double> &v, int par, int lc)
throw (WrongBoundsException)
: Node(a, b, v), parent(par), left_child(lc)
{
std::cout << par << std::endl;
}
我得到:
$ g++ InternalNode.cpp
InternalNode.cpp:16:錯誤:的「InternalNode :: InternalNode(雙,雙,性病::矢量> &,INT,INT)拋出聲明( WrongBoundsException)」引發不同的異常 InternalNode.h:17:錯誤:從先前聲明 'InternalNode :: InternalNode(雙,雙,性病::矢量> &,INT,INT)'
UPDATE 0:固定丟失:
更新1:固定拋出異常
你在'std:endl'中有一個冒號,它應該是一個雙冒號。 – sharptooth 2010-06-18 10:52:20
錯誤說你沒有修復缺少的異常規範。順便說一句,看看[務實查看例外規格](http://www.gotw.ca/publications/mill22.htm)。 – 2010-06-18 11:02:25