声明全局变量我在类的全局变量:问题在C++
IloModel model;
是要之间的类的几个功能共享。
在功能之一,我要初始化这种模式,如:
model(env);
我得到的错误: 错误1个错误C2064:术语不计算为函数取1个参数
这工作,如果我写的函数:
IEnv env;
IloModel model(env);
但如果模型对象的全局声明。
请指教如何使模型对象成为全局对象,以便在多个函数之间共享相同的对象?
声明全局变量我在类的全局变量:问题在C++
IloModel model;
是要之间的类的几个功能共享。
在功能之一,我要初始化这种模式,如:
model(env);
我得到的错误: 错误1个错误C2064:术语不计算为函数取1个参数
这工作,如果我写的函数:
IEnv env;
IloModel model(env);
但如果模型对象的全局声明。
请指教如何使模型对象成为全局对象,以便在多个函数之间共享相同的对象?
当你做
IloModel model;
它被初始化与默认的构造函数;所以IloModel()
你需要做的是
model = IloModel(env);
有错误可能是因为它正在寻找一个函数模型与一个paramatere并没有找到一个。
很棒,简单而优秀:-) – InfoLearner 2011-02-02 11:11:57
为什么你不声明全局env然后直接用env初始化模型? 换句话说,全球范围内把这个:
IEnv env;
IloModel model(env);
否则,你不能调用构造函数初始化模式,你需要IloModel
类另一个init方法施工后指定IEnv
。
您不能在稍后的时间点调用对象的构造函数model
。您需要在定义对象本身时执行此操作。如果env
也是全球性的,那么你可以做IModel model(env)
。
您在模型类上调用的函数是它的构造函数。作为你的类的成员(全局到类,但肯定不是应用程序,除非它是静态的和可访问的),你可以构造它一次,并且它在类的初始化列表中,例如:现在
class MyClass
{
private:
IloModel model;
public:
MyClass(IEnv _env) : model(_env) // constructs model here, passing env
{
};
void someFunction()
{
// use model here
};
}; // eo class MyClass
,我不知道是什么IEnv
在所有(或为此事模型),所以如果从逻辑上讲,你需要构建模型,每次你不同的IEnv
这可能不是为你工作用它。
不知道我明白你的意思与“全球”,因为它似乎你是在谈论一个类的成员。无论如何,如果你的数据是可复制,你可以做
model = IloModel(env);
这将创建一个新的模型,并将其复制在当前之一。
在你上一个例子中,你调用构造函数,一个特殊的函数来初始化对象。第一个示例尝试在对象model
上调用operator()
,如果类IloModel
未定义类别,则它不存在。
然而,你可以调用IloModel(env);
这将创建一个临时对象,并立即再次销毁它,嘿。
“班级中的全局变量”是不恰当的。从描述中,“这将在类的几个功能之间共享”,这听起来像一个普通的类变量。 – Arun 2011-02-02 13:51:12