typedef如何代替Procedural c ++的struct / class?

时间:2016-10-29 21:38:31

标签: c++ class struct typedef procedural

我必须构建一个具有两种数据类型的程序(Procedural C ++)。一个叫Elem,它是矢量元素(单维数组)。一个名为Vector的包含一个unsigned int表示数组的大小,也包含Elem的数组本身。我似乎无法弄清楚构造这些的正确方法,以便它们可以工作,因为我以前从未使用过程c ++做过任何事情。

这就是我所拥有的

typedef Elem {
    float Element;
}

typedef Vector {
    unsigned int size = 0;
    Elem* Array = new array[];
}

但我收到此错误

C++ requires a type specifier for all declarations
typedef Elem {
~~~~~~~ ^

以及

error: expected ';' after top level declarator
typedef Elem {
            ^

我在这里不知所措,任何帮助都将不胜感激!

2 个答案:

答案 0 :(得分:5)

你没有说

typdef Elem {
...
};

正确的方法是

struct Elem {
...
};

还请注意声明末尾的分号;

有关一些小例子,另请参阅Class declaration

答案 1 :(得分:2)

typedef float Elem;

struct Vector {
    unsigned int size;
    Elem* Array;
};

您可以使用构造函数,析构函数,复制语义等定义完整的Vector类。或者只使用std::vector<Elem>

你可能会对C感到困惑,其中一个常见的习语是:

typedef struct tagVector {
    ...
} Vector;

但是这个冗长的语法在C ++中是不必要的。