-2
template<typename Type> class ListNode{
private:
    Type nodeData;
    ListNode *nextNode;

    friend class SingleList<Type>;
    ListNode():nextNode(NULL){} 
    ListNode(const Type item,ListNode<Type> *next=NULL):nodeData(item),nextNode(next){} 
    ~ListNode(){
        nextNode=NULL;
    }

public:
    Type GetData();
    friend ostream& operator<< <Type>(ostream& ,ListNode<Type>&);    
};


template<typename Type> Type ListNode<Type>::GetData(){
    return this->nodeData;
}
//here, compiler said 'nodeData is a private member of ListNode<int>'

编译器说'nodeData 是 ListNode 的私有成员'

我怎样才能得到一个私有变量?

或者像 Java 这样的 c++ 中的任何 get/set 函数?

4

1 回答 1

0

是的,您应该使用 get/set 方法来获取数据。

要传递实际对象,您应该使用指针或引用。

要传递副本,只需按值传递。

这是 Java 和 C++ 在传递对象方面的主要区别。

您的 getdata 方法仅返回 nodeData 的副本,这取决于您是否愿意。如果它是一个大对象,它应该通过引用来完成,否则一个副本就可以了。

编辑:至于它说它是一个私有变量,我不确定它为什么这样做。我复制了您的代码并自己运行它,没有编译器错误。

于 2013-08-01T16:01:23.143 回答