【发布时间】:2012-04-12 11:40:39
【问题描述】:
我正在开发一个程序,但在涉及类时无法理解使用指针。我知道我必须使用new 为指针分配内存,并且在不使用类时对此很好。不过,我找不到一个简单的教程来解释如何执行此特定任务。有人可以给我一些帮助吗?这是我到目前为止所做的相关 sn-ps,但它正在输出随机字符:
"Hangman.c"
{
class Hangman
{
public:
...
char* remainingLetters();
Hangman()
{
char* remaining=new char[26];
}
~Hangman();
private:
char* remaining;
}
"Hangman.cpp"
{
...
char* Hangman::remainingLetters()
{
...does task to find remaining letters;
return remaining;
}
ostream& operator<< (ostream &out, Hangman &game)
{
out << "Letters remaining are: " << game.remaining <<endl
return out;
}
}
"main.cpp"
{
...
cout << game;
...
}
【问题讨论】:
-
您不应该在 C++ 中真正使用指针或
new,尤其是如果您是初学者。它们是图书馆开发人员的利基专家主题。 -
以不使用指针为主题,为什么不直接将成员变量声明为数组呢? IE。
char remaining[26];那你就不用担心内存泄漏之类的事情了,比如忘记释放析构函数中的内存。 -
@JoachimPileborg 每次调用该函数时我都需要返回一个数组,如果我没记错的话,这不能在 C++ 中完成。这就是我尝试使用指针的原因。在这种情况下是否有可能得到一个数组输出?
-
一个数组可以转换为同类型的指针,即你可以做类似
char array[26]; char *pointer = array; printf("pointer[1] = '%c'\n", pointer[1]); -
@adohertyd - 您可以使用
std::string来存储您的信件。返回 C++ 字符串没有问题,只返回数组。
标签: c++ class memory-management constructor operator-overloading