的初始化列表假設我有一個簡單的類:初始化向量與INTS
class Pvector
{
private:
std::vector<long double> point_list;
public:
Pvector(std::initializer_list<long double> coords) : point_list(coords)
{}
Pvector(std::initializer_list<int> coords) : point_list(coords)
{}
};
這不能編譯,因爲模板上long double
型std::vector
本身不能從模板上int
類型的初始化列表初始化。這是相當不方便,但是,由於與第二構造去掉,我不能做我的代碼如下:
Pvector piece_movement({E.X - S.X, E.Y - S.Y, E.Z - S.Z});
這是因爲我的數學運算得到的類型是int
類型。所以我似乎陷入了一個難題。我希望能夠將整數直接傳遞給Pvector
的構造函數,但我仍然希望point_list
的類型爲long double
,並且(以某種方式)用我傳入的整數初始化。我該如何去做這件事?
我知道這一點,但我仍然不確定在傳遞整型變量的情況下該怎麼做。現在我想到了,我想我可以靜態地將它們中的每一個都放大一倍,但這不一定是最理想的解決方案。 – JohnTravolski
@JohnTravolski,這不是很清楚。我不知道如何傳遞整數類型的變量是一個問題。 –
啊哈,你的第二個解決方案似乎已經糾正了這個問題。我現在能夠使用非常量整數值和變量來初始化我的Pvector,即使沒有第二個構造函數。 – JohnTravolski