调用带有指针对象错误的指针变量

calling a pointer variable with pointer object error

本文关键字:指针 变量 错误 对象 调用      更新时间:2023-10-16

"让你知道Kova=Bucket这个用土耳其语写的代码。">

#include<iostream>
#include<vector>
using namespace std;

class Kova
{
public:
void KovaCizdir(const char *dizi[6][6])
{
dizi[0][0] = "";
dizi[0][1] = "";
dizi[0][2] = ".";
dizi[0][3] = "|";
dizi[0][4] = ".";
dizi[0][5] = "";
dizi[0][6] = "";
dizi[1][0] = "";
dizi[1][1] = ".";
dizi[1][2] = "";
dizi[1][3] = "";
dizi[1][4] = "";
dizi[1][5] = ".";
dizi[1][6] = "";
dizi[2][0] = ".";
dizi[2][1] = "";
dizi[2][2] = "";
dizi[2][3] = "";
dizi[2][4] = "";
dizi[2][5] = "";
dizi[2][6] = ".";
dizi[3][0] = "#";
dizi[3][1] = "";
dizi[3][2] = "";
dizi[3][3] = "";
dizi[3][4] = "";
dizi[3][5] = "";
dizi[3][6] = "#";
dizi[4][0] = "#";
dizi[4][1] = "";
dizi[4][2] = "";
dizi[4][3] = "-";
dizi[4][4] = "";
dizi[4][5] = "";
dizi[4][6] = "#";
dizi[5][0] = "#";
dizi[5][1] = "";
dizi[5][2] = "";
dizi[5][3] = "";
dizi[5][4] = "";
dizi[5][5] = "";
dizi[5][6] = "#";
dizi[6][0] = "#";
dizi[6][2] = "#";
dizi[6][3] = "#";
dizi[6][4] = "#";
dizi[6][5] = "#";
dizi[6][6] = "#";
};
void KovaOlustur(int kovaSayisi)
{
for (int t = 0; t < kovaSayisi; t++)
{
char *Kovalar[6];
for (int i = 0; i < 7; i++)
{
Kovalar[i] = new char[6];
}
}
};
};

int main()
{
int kovaSayisi;
cout << "Kova Sayisi : ";
cin >> kovaSayisi;
Kova *kova = new Kova();
kova->KovaOlustur(kovaSayisi);
kova->KovaCizdir(*Kovalar[6][6]);
}

标识符"Kovalar"未定义错误我怎么能解决这个问题呢?我不太会用指针。我试图用指针制作一个bucket形状,稍后用户可以更改bucket的字段并更改它们的编号。它可以包括许多逻辑错误,我想知道所有的

根据您的代码-Kovalar是KovaOlustur方法的局部变量,因此它对外部世界不可见。除此之外,您提供的代码中还有一些小缺陷,让我帮助您纠正它们:

#include<iostream>
#include<vector>
using namespace std;

class Kova
{
private: 
char *Kovalar[6]; // make the Kovalar a member variable of the class
public:
Kova(int kovaSayisi) {
KovaOlustur( kovaSayisi);
// otherwise you can move the whole code of KovaOlustur code here like:
/* for (int t = 0; t < kovaSayisi; t++)
{

for (int i = 0; i < 7; i++)
{
Kovalar[i] = new char[6];
}
}*/
}
void KovaCizdir() // no parameters required, as the data is now a member variable
{
// anything in double quote "" is treated as a const char* in c/c++
// but you are trying to access the Kovalar with 2 indices which make that to be 
// char - so change the double quotes "" to single quotes ''
Kovalar[0][0] = ' '; 
Kovalar[0][1] = ' '; 
Kovalar[0][2] = '.';
Kovalar[0][3] = '|';
Kovalar[0][4] = '.';
Kovalar[0][5] = ' ';
Kovalar[0][6] = ' ';
Kovalar[1][0] = ' ';
Kovalar[1][1] = '.';
Kovalar[1][2] = ' ';
Kovalar[1][3] = ' ';
Kovalar[1][4] = ' ';
Kovalar[1][5] = '.';
Kovalar[1][6] = ' ';
Kovalar[2][0] = '.';
Kovalar[2][1] = ' ';
Kovalar[2][2] = ' ';
Kovalar[2][3] = ' ';
Kovalar[2][4] = ' ';
Kovalar[2][5] = ' ';
Kovalar[2][6] = '.';
Kovalar[3][0] = '#';
Kovalar[3][1] = ' ';
Kovalar[3][2] = ' ';
Kovalar[3][3] = ' ';
Kovalar[3][4] = ' ';
Kovalar[3][5] = ' ';
Kovalar[3][6] = '#';
Kovalar[4][0] = '#';
Kovalar[4][1] = ' ';
Kovalar[4][2] = ' ';
Kovalar[4][3] = '-';
Kovalar[4][4] = ' ';
Kovalar[4][5] = ' ';
Kovalar[4][6] = '#';
Kovalar[5][0] = '#';
Kovalar[5][1] = ' ';
Kovalar[5][2] = ' ';
Kovalar[5][3] = ' ';
Kovalar[5][4] = ' ';
Kovalar[5][5] = ' ';
Kovalar[5][6] = '#';
Kovalar[6][0] = '#';
Kovalar[6][2] = '#';
Kovalar[6][3] = '#';
Kovalar[6][4] = '#';
Kovalar[6][5] = '#';
Kovalar[6][6] = '#';
// otherwise you can also write like this:
/*Kovalar[0] = "  ./.  ";
Kovalar[1] = " .   . ";
Kovalar[2] = ".     .";
Kovalar[3] = "#     #";
Kovalar[4] = "#  -  #";
Kovalar[5] = "#     #";
Kovalar[6] = "#######"; */
}
void KovaOlustur(int kovaSayisi)
{
for (int t = 0; t < kovaSayisi; t++)
{

for (int i = 0; i < 7; i++)
{
Kovalar[i] = new char[6];
}
}
}
};

int main()
{
int kovaSayisi;
cout << "Kova Sayisi : ";
cin >> kovaSayisi;
Kova *kova = new Kova(kovaSayisi); // here the variable kovaSayisi is not at all used, you can eliminate that
//kova->KovaOlustur(kovaSayisi); /* now no need of this call because this is done in the constructor itslef
kova->KovaCizdir(); // no need of passing the parameter, becuase the data is now a member of the class itself
}

我提供了内联评论供您理解,希望这能帮助并解决您的问题。

谢谢,

Rajkumar