C++ 在课堂上传递参考资料

C++ 在课堂上传递参考资料,c++,class,reference,types,linked-list,C++,Class,Reference,Types,Linked List,我完全糊涂了。在这个属于我的课程的示例中,我有: public: typedef DoubleLinkedNode<DataType> Node; private: const DataType* fValue; Node* fNext; Node* fPrevious; DoubleLinkedNode(): fValue((const DataType*)0){

我完全糊涂了。在这个属于我的课程的示例中,我有:

public:
        typedef DoubleLinkedNode<DataType> Node;    
private:
            const DataType* fValue;
            Node* fNext;
            Node* fPrevious;
            DoubleLinkedNode(): fValue((const DataType*)0){
                fNext = (Node*)0;
                fPrevious = (Node*)0;
            }
我很困惑,我到底要写什么,为什么?如何将
aValue
定义为我的
fValue
?!
(注意:
std::cout由于
fValue
是一个指针,而DoubleLinkedNode()通过引用获取一个对象,因此需要取消对指针的引用,如下所示:

DoubleLinkedNode(*fValue);

由于
fValue
是指针,而DoubleLinkedNode()通过引用获取对象,因此需要取消对指针的引用,如下所示:

DoubleLinkedNode(*fValue);

如果
fValue
是一个指针,它需要指向在别处创建的某个变量。那么什么代码负责指向的值
*fValue
的生命周期

如果类需要自己创建值,并且
fValue
确实需要作为指针,那么它可以使用
new
delete

template <typename DataType>
DoubleLinkedNode<DataType>::DoubleLinkedNode( const DataType& aValue )
  : fValue( new DataType(aValue) ), fNext(0), fPrevious(0)
{}
template <typename DataType>
DoubleLinkedNode<DataType>::~DoubleLinkedNode() {
    delete fValue;
}

如果
fValue
是一个指针,它需要指向在别处创建的某个变量。那么什么代码负责指向的值
*fValue
的生命周期

如果类需要自己创建值,并且
fValue
确实需要作为指针,那么它可以使用
new
delete

template <typename DataType>
DoubleLinkedNode<DataType>::DoubleLinkedNode( const DataType& aValue )
  : fValue( new DataType(aValue) ), fNext(0), fPrevious(0)
{}
template <typename DataType>
DoubleLinkedNode<DataType>::~DoubleLinkedNode() {
    delete fValue;
}

我不太清楚您想在这里做什么,但是如果您想用fValue指向aValue地址(通过引用传递给构造函数)来构造DoubleLinkedNode,您需要这样定义构造函数:

DoubleLinkedNode( const DataType& aValue ) : fValue(&aValue) {
        std::cout << "  --  "  << aValue << std::endl;
}

我不太清楚您想在这里做什么,但是如果您想用fValue指向aValue地址(通过引用传递给构造函数)来构造DoubleLinkedNode,您需要这样定义构造函数:

DoubleLinkedNode( const DataType& aValue ) : fValue(&aValue) {
        std::cout << "  --  "  << aValue << std::endl;
}

旁注-你不需要施放
0
你不清楚你想做什么。你想打印
*fValue
?旁注-你不需要施放
0
你不清楚你想做什么。你想打印
*fValue
DoubleLinkedNode( const DataType* aValue ) : fValue(aValue) {
        std::cout << "  --  "  << aValue << std::endl;
}