聲明全局變量我在類的全局變量:問題在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