#include <iostream>
#include <string>
#include <sstream>
#include <ostream>
#include "battleshipgrid.h"
using namespace std;
battleshipgrid::battleshipgrid ()
{
for (int i=0;i < 10;i++)
{
for (int j =0; j<10;j++)
{
waters[i][j]='o';
}
}
}
void battleshipgrid::shotat (position pos, bool hit, char initial)
{
if (hit)
{
waters[pos.getcol()][pos.rowindex()]=initial;
}
if (!hit)
{
waters[pos.getcol()][pos.rowindex()]='x';
}
}
bool battleshipgrid::hit(position pos)
{
if (o.hit(pos))
{
return true;
}
else
{
return false;
}
}
bool battleshipgrid::miss(position pos)
{
if (!o.hit(pos))
{
return true;
}
else
{
return false;
}
}
bool battleshipgrid::empty(position pos)
{
if (waters[pos.getcol()][pos.rowindex()]=='o')
{
return true;
}
else
{
return false;
}
}
char battleshipgrid::boatinitial(position pos)
{
return waters[pos.getcol()][pos.rowindex()];
}
void print ()
{
for (int i=0; i <10;i++)
{
std::cout<<"\n";
for (int j=0;j<10;j++)
{
cout<<waters[i][j]<<" ";
}
}
因此,您可以看到我收到未声明标识符的错误,这是确切的错误
错误C2065:&#39;水域&#39; :未声明的标识符
它说水是一个未声明的标识符。正如您所知,水已被用于多个区域,我们没有收到错误。如果我们注释掉void print方法它解决了所有问题,但我们需要print方法。如果你看到了什么我不能告诉我。
答案 0 :(得分:2)
waters
显然是class battleshipgrid
的成员。
在此功能中, 不属于battleshipgrid ,您尝试访问成员变量waters
void print () // Not part of class battleshipgrid!
{
for (int i=0; i <10;i++)
{
std::cout<<"\n";
for (int j=0;j<10;j++)
{
cout<<waters[i][j]<<" "; // Trying to access data in class battleshipgrid!
// but without referring to the class or an instance!
}
}
}
另外,以下是简化大量代码的方法:
bool battleshipgrid::hit(position pos) { return o.hit(pos); }
bool battleshipgrid::miss(position pos) { return !o.hit(pos); }
bool battleshipgrid::empty(position pos) { return ('o'==waters[pos.getcol()][pos.rowindex()]); }
答案 1 :(得分:0)
似乎waters
是battleshipgrid
类的成员变量。另一方面,print()
与该类无关。
您是否意味着实施
void battleshipgrid::print ()