我有以下類:C++成員變量初始化,但首先做裏面的一些工作,它
class MyClass {
public:
MyClass(string something);
~MyClass();
private:
some_namespace::some_class_name my_variable_name;
};
與下面的構造函數的定義:
MyClass::MyClass(string path) {
string other = "jwrhkfg";
my_variable_name = some_namespace::some_class_name(path+other)
}
我試圖初始化my_variable_name
的東西取決於path
。我知道我可以使用初始化列表:
MyClass::MyClass(string path) : my_variable_name(path+other) {}
但是,如果我需要做的path
串的頂部進行大量的處理,然後初始化my_variable_name
?如果我需要做這樣的事情:
MyClass::MyClass(string path) {
string other = "jwrhkfg";
if (path="site.com") {
other = "oritrot";
} else {
other = "hsghkr";
}
my_variable_name = some_namespace::some_class_name(path+other)
}
我不能把這些if
S IN的初始化列表。
我想上面的代碼會工作,因爲我只是聲明瞭名稱my_variable_name
但沒有定義它,這樣我就可以在構造函數中做,但是當我做:
MyClass my_object = MyClass("some_string");
我拿到那有沒有構造函數some_class_name
(因爲默認構造函數有一個說法,在這裏它試圖初始化即使我沒有初始化,只是聲明
你完全錯過了[構造函數列表](http://www.cprogramming.com/tutorial/initialization-lists-c++.html)的要點。請閱讀鏈接的文章。 – paulsm4