我是c ++的新手并遇到一个问题我有这样的情况: 我有这样的课程霍夫曼:
class HuffmanTree
{
public: int size,length;
Huffman(char * argv) ; // please see it's definition below, in it's defintion i read the frequency from a file (Input.txt) which taken as sole argument (which conatains some alphabets like "aaabbaacccab" to calculate frequency).
~HuffmanTree () {};
struct Node
{
int value, Front, Rear;
short flag;
unsigned char symbol;
int left, right;
};
Node * tree;
Node data[1000];
};
n = sym.size() - 1;
//here is the main function
int main(int argc, char *
* argv)
{
int freq[256] = { 0 };
HuffmanTree Object1(argv[1]);
cout<<"check"<<storesym.size()<<endl;
Object1.read( &Object1.tree, sym.size() - 1, Object1.data, Object1);
return (0);
}
请不要深入研究代码,因为我的问题很简单,就是这样:** 在我的构造函数中,我有变量和数组,如“data []”,“storesym”,我想在main函数中使用,但它们的范围仅限于Constructor定义。 **他们是否可以将“data []”的范围作为主要功能中的节点类型和“storeym”的范围?
答案 0 :(得分:1)
一些不同的方法:
可能最简单的方法是将它们添加到您的类中(与data_size相同) 无论您需要什么数据类型,首先将它们添加到类定义中:
class Huffman
{
public:
int data_size;
boolean my_flag;
int my_value;
Node my_array[20];
}
然后在构造函数
中为它们分配正确的值Huffman::Huffman(char * argv)
{
//e.g.
my_flag = true;
}
然后通过对象从Main读取/写入它们:
int main(int argc, char * * argv)
{
//...
if(Object1.my_flag)
{
}
}