Я не знаю, почему это требование для копии Constructer в классе Node дает эту ошибку, хотя конструктор State State copy работает в основном, посмотрите.Нет соответствующей функции call to State :: State (State)
Примечание: мой компилятор - версия gcc 4.8.2.
class Node
{
public:
Node(Node& rhs);
Node(State state);
private:
State mystate;
Node* next; // pointer to the next node
};
Node::Node(Node& rhs) : mystate(rhs.getState()), next(NULL)
{
// the error here how ever I could call
// State cpy constructer in main or other places !
}
Node:: Node(State state): mystate(state) , next(NULL)
{
//....
}
class State
{
public:
State(State& RHS);
void operator = (State& RHS);
private:
State* parent;
State::State(State& RHS) : parent(NUL)
{
.....
}
void State::operator = (State& RHS)
{
}
};
int main()
{
State x;
State m = x; // here State cpy constructer called successfuly
return 0;
}
Не используйте символы TAB в представлении кода разметки! Исправьте остальные изменения самостоятельно (слишком устало сейчас). –
Определение класса Node не должно даже компилироваться, поскольку оно использует необъявленный идентификатор 'State'. Чтобы исправить это, сначала нужно определить «Состояние» (не просто объявленное). –