奇怪的构造函数C ++

时间:2015-03-14 12:23:16

标签: c++ constructor enums

我必须写一个名为Tile的课程。

我有一个给定的main.cpp,我无法改变。我的问题是关于给定main函数中的构造函数调用。

底部的给定主要用Tile(Tile::TYPE_CROSS, COLOR_RED);调用构造函数,它给出了一个错误:“Class Tile does not have a member TYPE_CROSS。”适用于COLOR_RED

我的问题是,为什么这样称为Tile(Tile::TYPE_CROSS,...) 而不是像我想做的那样,例如Tile(TYPE_CROSS, COLOR_RED);

有了它,它不会给我错误,但不幸的是我无法改变主要。 另外,我必须在课堂上使用枚举。

Tile.h(由我):

#ifndef TILE_H
#define TILE_H

enum Type
{
  TYPE_CROSS = 1,
  TYPE_CURVE_1 = 2,
  TYPE_CURVE_2 = 3
};

enum Color
{
  COLOR_RED = 1,
  COLOR_WHITE = 2
};

class Tile
{
private:
  Type side_;
  Color top_color_;
public:
  Tile(); // Default constructor
  Tile(Type side, Color orientation); // Constructor
  ~Tile();
};

#endif

Tile.cpp(由我):

#include "Tile.h"

// Constructor
Tile::Tile(Type side, Color orientation)
{
  side_ = side;
  top_color_ = orientation;
}

鉴于main.cpp:

int main(int argc, char **argv)
{
  Tile(Tile::TYPE_CROSS, COLOR_RED); // THIS LINE RIGHT HERE

  //Tile(TYPE_CROSS, COLOR_RED);
  //Tile t1(TYPE_CROSS, COLOR_RED);
  return 0;
}

忽略丢失的析构函数,我稍后会添加它。

1 个答案:

答案 0 :(得分:0)

这是否有效:

enum Color
{
  COLOR_RED = 1,
  COLOR_WHITE = 2
};

class Tile
{
private:

  Color top_color_;
public:

enum Type
{
  TYPE_CROSS = 1,
  TYPE_CURVE_1 = 2,
  TYPE_CURVE_2 = 3
};
Type side_;
  Tile(); // Default constructor
  Tile(Type side, Color orientation); // Constructor
  //~Tile();
};