【发布时间】:2012-02-03 18:28:57
【问题描述】:
我想在一个类中创建一个静态向量,并且我想在创建向量时调整它们的大小。我正在尝试在构造函数或主函数中执行此操作。但我无法让它工作。问题是我不能以这种方式调用向量类的函数。 这就是我现在拥有的:
#include <vector>
using namespace std;
class test
{
public:
static vector<int> testvec;
test();
};
test::test() //Not static
{
test::testvec.resize(0); //Try 1
}
vector<int> test::testvec.resize(0); //Try 2
int main()
{
test::testvec.resize(0); //Try 3
test testclass;
system("pause");
return false;
}
我需要处理每个对象中向量上的所有数据,这就是我想让向量静态的原因。
有人可以帮我解决这个问题吗? 谢谢!
编辑:语法。我尝试过的每种方法都会出现编译错误。
【问题讨论】:
-
你确定你的方法真的是最好的吗?如果您在某个时候需要两组独立的
test对象怎么办?shared_ptr解决方案可能更好。 (静态数据有时可能很好,但它应该是 const 或至少类似于 const;即一个对象所做的永远不会给其他对象造成问题,但将大小调整为 0 看起来很容易出现问题。) -
您需要转发声明静态变量。在 Try 1 中没有静态构造函数。在 Try 2 中,您不能全局调用静态成员的方法。在 Try 3 中,您将调用
.resize(0)两次。如果您想在构造函数中使用clear(),则可能不需要静态成员。也不要从 main 中返回bool并避免system。 -
@AJG85: 你需要define 静态变量(好吧,所有变量,只是非外部声明也将是大多数其他类型变量的定义)。您不能转发声明任何变量。
-
@DavidRodríguez-dribeas 是的,我的术语是错误的。
标签: c++ vector constructor resize main