访问私有数据成员的问题c ++

时间:2015-11-21 04:13:41

标签: c++

我有三个文件:Stack.cc,Stack.h和stacktest.cc。我不确定哪些文件包含在哪里,因此我会得到不同的错误。目前,Stack.h的代码是:

#ifndef STACK_H
#define STACK_H
#include<iostream>

using namespace std;

template<typename T>
class Stack
{
public:
    Stack();
    void push(int);
    void pop();
    int top();
    int size();
    bool empty();   

private:
    class Element
    {
    public:
        int data;
        Element *next;
        Element(Element *n, T d) : next{n}, data{d} {}
    };
    Element *first;
    int num;
};
#endif
#include"Stack.cc"
来自Stack.cc的(相关的,我认为)代码是:

#include<iostream>
using namespace std;
template<typename T>
Stack<T>::Stack()
{
    first=nullptr;
}


template<typename T>
void Stack<T>::push(int)
{
    num++;
    first = new Element(first, data);
}

Stacktest目前只是一个试图调用默认构造函数的测试文件。我目前得到的错误是:

In file included from Stack.h:30:0,
             from stacktest.cc:2:
Stack.cc: In member function ‘void Stack<T>::push(int)’:
Stack.cc:22:28: error: ‘data’ was not declared in this scope
 first = new Element(first, data);
                        ^
Stack.cc: In function ‘int size()’:
Stack.cc:62:11: error: ‘num’ was not declared in this scope
return num;

出于某种原因,它不会让我访问私人数据成员。之前我没有.h文件中的include,而是在Stack.cc中包含了.h,这很有用,虽然不能让我从Stacktest.cc访问堆栈类(Stacktest.cc只包含Stack.h)

非常感谢任何帮助,谢谢。

0 个答案:

没有答案