我必须写一个名为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;
}
忽略丢失的析构函数,我稍后会添加它。
答案 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();
};