3

在 c++ 中说我在头文件中定义了一个结构。

******test.h***********
typedef struct mystruct{
    uint8_t num;
} mystruct;

在另一个头文件中,比如 myclass.h,我想定义一个与 mystruct 中的字段“num”具有相同类型 (uint8_t) 的变量。

******myclass.h***********
class myclass{
public:
    ??? num;
};

有没有办法定义这样的变量?谢谢。

4

2 回答 2

5

使用 C++11,您可以使用decltype

class myotherclass
{
public:
  decltype (myclass::num) otherNum;
};

在不使用 C++11 的情况下,我这样做的典型方法是后退一步。创建一个typedef

typedef uint8_t MyIntegral;

然后在两个类中使用相同的类型:

class myclass
{
public:
  MyIntegral num;
};

class motherclass 
{
pulic:
  MyIntegral othernum;
};

这并不完全是您所要求的,但如果您可以更改定义,myclass您可能会发现这种方法更易于维护。

于 2013-07-09T20:15:10.980 回答
3

您必须在第一个类中定义类型,然后从另一个类访问它

******test.h***********

struct mystruct{
    typedef uint8_t num_t;
    num_t num;
};

******myclass.h***********
class myclass{
public:
    mystruct::num_t num;
};
于 2013-07-09T20:15:21.690 回答