传递用于结构定义的参数
Pass argument for use in struct definition
我想声明一个结构体:
struct myStruct{
myType myVar[mySize];
//...
};
我怎么做,或者我把它放在哪里,这样我就可以在运行时知道mySize
的值时这样做?
mySize
实际上有一个默认值,但是用户可以通过标准输入提供一个不同的值。然后将这个自定义大小传递给函数,在函数中定义结构体。
但是如果结构在函数定义内,我得到一个错误,说它不允许是变量,如果我把它放在函数外面(在头文件中),它抱怨mySize
没有定义-当然,它不是通过任何方式传递的。
我的猜测是解决方案在于OOP*,但这不是我还没有研究过的东西。
*如果这是一个错误的假设,请告诉我,以便我可以删除标签
可以使用vector
#include <vector>
struct myStruct
{
public:
// this is your array
std::vector<myType> myVar;
// this is the default constructor
// this tells that the user will be passing a number
myStruct(int const &mySize)
{
myVar.resize(mySize);
}
};
在主目录
int main()
{
myStruct example(10);
return 0;
}
这样,您就不必担心内存管理。
myStruct
是一个对象。
struct myStruct
{
public:
// this is your array
myType *myVar;
// this is the default constructor
// this tells that the user will be passing a number
myStruct(int const &mySize)
{
myVar = new myVar[mySize];
}
// this is your default destructor
~myStruct()
{
delete[] myVar;
}
};
但是myVar变成了一个指针,它的处理方式与vector不同。
Vector是c++标准库的一部分。如果这不是作业,我建议你们用它。
C数组在c++中不能作为类成员具有动态大小。然而,c++有一个类提供了这个功能——std::vector
。
这给了我们:
struct myStruct {
std::vector<myType> myVar;
myStruct(std::size_t size = default_size)
: myVar(size) {}
};
带回家的信息:熟悉c++标准库,没有扎实的知识在c++中工作几乎是不可能的。
相关文章:
- 如何使用宏根据参数定义不同的数据类型?
- 有没有办法根据命令行参数定义数组大小?运行时与编译时实例化?
- 为什么我需要将默认引用参数定义为 const 以便为其分配一个左值?
- 如何通过opencv中的程序参数定义特征类型?
- 确定是否有针对特定类型的参数定义的超载函数
- C 试图使用函数参数定义2D数组
- 是否可以为模板模板参数定义别名
- C++11:用容器参数定义函数(类似于基于范围的)
- C++-用类参数定义矢量大小
- 使用void* 参数定义纯虚函数的抽象基类.派生类匹配参数是指向某种类型的指针
- 如果我使用非常量参数定义那些,我是否仍然会获得默认的复制构造函数和运算符 =
- 使用参数定义的打印方法名称
- 如何根据类参数定义成员类运算符
- 如何为引用参数定义模板函数,为指针参数定义相同的函数
- boost::函数参数定义不起作用
- 如何基于不同的参数定义相同的宏函数
- 如何基于不同的参数定义相同的宏函数
- 将参数定义为未指定的模板类型
- C++模板,vector.size用于默认参数定义
- 如何为CamShift的矩形输入参数定义矩形变量