您的代码中有很多地方,应该在任何进一步的操作之前修复。
命名约定很糟糕。什么是a
, b
, c
?
您b
用作循环索引器,而应该在那里使用局部变量。
你不告诉我们,什么是 a
。它分配在哪里?指向的内存大小是a
多少?
我想,您的代码应该如下所示:
class InitLine
{
private:
char * data;
int count;
public:
InitLine(char * newData, int newCount)
{
// Possible error checking?
data = newData;
count = newCount;
}
// No parameters needed here, I guess
void Init()
{
for (int i = 0; i < count; i++)
data[i] = 0;
}
};
至于您的问题,我不确定您要达到什么目标以及您想知道什么。如果你想编写一个包含任何类型数组的泛型类,你必须使用模板:
template <typename T>
class InitLine
{
private:
T * data;
int count;
public:
InitLine(T * newData, int newCount)
{
// Possible error checking?
data = newData;
count = newCount;
}
// No parameters needed here, I guess
void Init()
{
for (int i = 0; i < count; i++)
data[i] = 0;
}
};
您必须通过以下方式使用此类:
InitLine<char> line(myData, myDataSize);
// where myData is a char * and myDataSize is an int
如果你想编写几个参数不同的方法,这种技术称为方法重载,在 C++ 中可用:
void Init(char * a, int b) { /* sth */ }
void Init(int * a, int b) { /* sth */ }
注意,编译器必须能够清楚地区分,应该调用哪个方法。例如。
void Test(int a) { }
void Test(char a) { }
Test(0); // Ambiguity: which method should be called?
这些只是我在阅读您的问题时想到的事情。如果这不是您所要求的,请考虑将问题编辑得更具体。