Найти - Пользователи
Полная версия: Python в C++
Начало » Центр помощи » Python в C++
1
Armany
Помогите если не трудно перевести етот код в C++. Я недавно начал его учить и мне нужно один раз увидеть как это делается…;)

class Node:		
	def __init__(self,initData,initPrevious = None,initNext = None):
		self.data = initData
		self.next = initNext
		self.previous = initPrevious
	def getData(self):
		return self.data
	def getNext(self):
		return self.next
	def getPrevious(self):
		return self.previous
	def setData(self,newdata):
		self.data = newdata
	def setNext(self,newnext):
		self.next = newnext
	def setPrevious(self,newprevious):
		self.previous = newprevious
		
	def __str__(self):
		return str(self.data)
doza_and
template<class T>
class Node
{
T* data,*next,*previous;
public:
Node(T *initData,T *initPrevious ,T *initNext):data(initData),previous(initPrevious) ,next(initNext){}
T* getData() const {return data;}
T* getNext() const {return next;}
void setData(T *newdata){data=newdata;}
void setNext(T *newdata){next=newdata;}
operator string() const {return string(*data);}
};
Armany
выдает ошибку: “ ‘Node’ is not a template type ” :S

doza_and
А у меня никаких ошибок. vc10,g++ 4.5.2 :)
operator string() const {return string(*data);} комментировал чтобы не возиться с преобразованием в строку.
Напишите что делали чтобы в этом коде получить ошибку.

Armany
Честно говоря я попробовал сделать немного по другому но всё равно не выходит. Не подскажите где я ощибаюсь ? У меня CodeBlocks.

Node.hpp
#ifndef NODE_HPP
#define NODE_HPP
#include <iostream>
using namespace std;
class Node
{
    public:
        Node();
        Node(int data,int previous,int next);
        double getData() const;
        double getNext() const;
        double getPrevious() const;
        void setData(int data);
        void setNext(int next);
        void setPrevious(int previous);
        friend std::ostream& operator <<(std::ostream&, const Node& data);
    private:
        int data,previous,next;
};
#endif // NODE_HPP]

Node.cpp
#include "Node.hpp"
#include <iostream>
using namespace std;
Node::Node() : initData(0), initPrevious(0), initNext(0)
{}
Node::Node(int data,int previous,int next): data(initData),previous(initPrevious) ,next(initNext)
{}
double Node::getData() const
{
    return this->data;
}
double Node::getNext() const
{
    return this->next;
}
double Node::getPrevious() const
{
    return this->previous;
}
void Node::setData(int data)
{
    this-> initData=data;
}
void Node::setNext(int next)
{
    this->initNext=next;
}
void Node::setPrevious(int previous)
{
    this->initPrevious=previous;
}
std::ostream& operator <<(std::ostream& str, const Point& data)
{
    str << data;
    return str;
}
doza_and
Ну первое что бросается в глаза
Node::Node() : initData(0), initPrevious(0), initNext(0)
initData - нигде не определена надо data(0) именно такое поле есть в классе.
Node::Node(int data,int previous,int next): data(initData),
тоже перепуталось то что инициализируется с тем чем оно инициализируется
надо примерно так:
Node::data(::data) тут получилось одинаковое название переменной класса и аргумента конструктора
А лучше их называть по разному:
Node::Node(int data_value,int previous,int next): data(data_value),

using namespace std;
std::ostream& operator
если уж заюзали std дальше можно писать ostream вместо std::ostream.

Лично мне кажется что тут вообще ни к чему явоподобный гемморой. Пишите проще!
class Node
{
public:
Node():previous(0),next(0){}
int previous,next;
};
Методы доступа сделаете когда будет к этому веское основание.
Armany
doza_and
Ну первое что бросается в глаза
Node::Node() : initData(0), initPrevious(0), initNext(0)
initData - нигде не определена надо data(0) именно такое поле есть в классе.
Node::Node(int data,int previous,int next): data(initData),
тоже перепуталось то что инициализируется с тем чем оно инициализируется
надо примерно так:
Node::data(::data) тут получилось одинаковое название переменной класса и аргумента конструктора
А лучше их называть по разному:
Node::Node(int data_value,int previous,int next): data(data_value),

using namespace std;
std::ostream& operator
если уж заюзали std дальше можно писать ostream вместо std::ostream.

Лично мне кажется что тут вообще ни к чему явоподобный гемморой. Пишите проще!
class Node
{
public:
Node():previous(0),next(0){}
int previous,next;
};
Методы доступа сделаете когда будет к этому веское основание.


Спасибо я всё исправил =) А возможно чтоб вместо init…(0) было None ?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB