2

[here] 给出了如何在 C++ 中使用数据结构的清晰示例。1这是链接页面上给出的示例之一:

struct product {
  int weight;
  float price;
} ;

product apple;
product banana, melon;

但是,我有一个不遵循此模板的代码,我无法理解它。我所拥有的如下:

struct result : mppp::data::table <
    row<semantics::user,       int>,
    row<semantics::exitdatum, spmm::date>,
    row<userid,                int>
> {};

我不明白为什么我们有如此复杂的结构而不是结构名称,以及应该如何理解它。此外,我不明白为什么结构的“主体”是空的(“{”和“}”之间没有任何内容)。

有人可以解释一下吗?

添加

谢谢你的回答。现在更清楚了。上:例中的 表示继承。但是所有这些结构意味着什么:aaa<bbb>

4

4 回答 4

7

该代码使用继承。您可以在其名称之后指定 a 的基类,用字符struct分隔它们,并且可能使用、或限定符之一来指定继承类型(如果未指定则为默认值 (*))::publicprotectedprivatepublic

struct A { }; // Fine

struct B : public A { }; // Also fine

struct C : B { }; // Fine again, `public` is assumed by default

struct D : A, B { }; // Also possible (multiple inheritance)

struct E { };

struct F : public E, private D { } // Qualifiers can differ

struct : A, F { } obj; // structs can be anonymous 

在您的情况下,基类是模板的一个实例:

template<typename T>
struct X { };

struct Y : X<A> { }; // Fine


(*)还值得一提的是,虽然相同的限定符适用于class类型的继承,但默认情况下假定为private这种情况。

于 2013-02-26T15:28:51.243 回答
2

它继承了一个模板,但没有添加它自己的任何字段。

您必须阅读 C++ 教程。

于 2013-02-26T15:27:55.913 回答
1

就像 中的情况一样是继承class。因此,在您的示例中,struct result继承了另一个类或 struct mppp::data::table < row<semantics::user, int>, row<semantics::exitdatum, spmm::date>, row<userid, int> >

于 2013-02-26T15:28:07.453 回答
0

Astruct等价于 a class(默认访问级别除外)。您也可以继承结构或类。mppp::data::table < row<semantics::user, int>, row<semantics::exitdatum, spmm::date>, row<userid, int>就是这样 - 一个专门的模板类。

于 2013-02-26T15:28:25.610 回答