刚学习C++中的Classes,我认为我对它的掌握相当不错,但由于某种原因,这段代码甚至无法编译.
#include <iostream>
#include <cstdlib>
using namespace std;
class Position
{
int row;
int column;
public:
Position(); //constructor
~Position(); //destructor
void setPos(int, int); //set the position
int getRow(); //return the current row
int getColumn(); //return the current column
void getPos(); //print the pos
bool compare(int, int); //compare a row and column with the one in the class
};
Position::Position()
{}
Position::~Position()
{}
void Position::setPos(int x, int y)
{
Position.row = x;
Position.column = y;
}
int Position::getRow()
{
return Position.row;
}
int Position::getColumn()
{
return Position.column;
}
void Position::getPos()
{
cout << "Row: " << Position.row << "Column: " << Position.column;
}
bool Position::compare(int x, int y)
{
if(x == Position.row && y == Position.column)
return true;
else
return false;
}
Run Code Online (Sandbox Code Playgroud)
在MS Visual Studio 2010中直接运行此代码会产生以下编译问题:
...prob2.cpp(30): error C2143: syntax error : missing ';' before '.'
第30行是:Position.row = x;
我不明白为什么或哪里应该有;任何地方.
我在其他几行上得到了这个错误,包括它下面的那一行.
我应该注意到我没有主要功能,虽然我不认为这是必要的.
您不需要使用类名称为实例变量添加前缀,而是使用row或this->row
编辑:
最终,您将要将类声明移动到头文件,即.position.h并将实现保留在顶部的position.cpp文件中#include "position.h".这将使您的Position类可用于其他文件.