【发布时间】:2014-09-13 20:07:18
【问题描述】:
作为前言,我正在重建一个旧游戏项目的基本结构。它是用 C# 编写的,我正在尽我所能将我拥有的东西转换成 C++。我也在使用 Visual Studio Professional 2013。在这种情况下,我有一个 Coordinate 类,可以动态获取和设置其 X 和 Y 属性的值。总而言之,它相当简单。
这是 C# 类:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConquestGameEngine.Map
{
public class Coordinate
{
public int X { get; set; }
public int Y { get; set; }
public Coordinate(int x, int y)
{
this.X = x;
this.Y = y;
}
}
}
这里是 C++ 类和头文件:
//Coordinate.h
#pragma once
class Coordinate
{
public:
Coordinate(int x, int y)
{
X = x;
Y = y;
}
~Coordinate();
int X, Y;
};
//Coodinate.cpp
using namespace std;
#include "Coordinate.h"
Coordinate::Coordinate(int x, int y)
{
Coordinate::X = x;
Coordinate::Y = y;
}
Coordinate::~Coordinate()
{
}
以我有限的知识和经验,以及我所做的研究/学习,我对头文件的功能和用途以及如何使用它们有了相当好的把握。但是我越是尝试重新创建在 C# 中建立的 get-set 原则,我越是对是否应该将某些内容放入 .h 或 .cpp 感到困惑。在熟悉库以及如何使用它时,我也很菜鸟,所以我不知道是否还有其他方法可以解决它。我在网上找到的所有示例都无法与我的问题或回答我的问题相提并论,或者过于笼统或过于具体而无法提供帮助。
还有一个名为 TilePattern 的类的次要问题,它由坐标列表组成,但我觉得一旦我弄清楚了这个坐标问题,我就可以自己解决这个问题。
所以我忽略了一些非常简单的事情吗?是新手的错误吗?这只是 C++ 中的复杂得多吗?库中是否有我不知道的工具可以解决所有这些问题?
【问题讨论】:
-
你的构造函数已经在header中实现了,不需要在cpp文件中重新定义。此外,C++ 没有属性,因此使用预处理器魔法来模拟这种行为是一种丑陋的 hack。在这种特定情况下,将 X 和 Y 保留为公共字段/成员变量是完全可以的。
标签: c# c++ class constructor header