我的類有具有相同名稱的兩個函數和以下簽名:C++函數名含糊
Mat<T, rows, cols> & transpose()
{
for (size_t i = 0; i < rows; ++i) {
for (size_t j = i + 1; j < cols; ++j) {
std::swap(at(i, j), at(j, i));
}
}
return *this;
}
此方法不執行該矩陣的就地轉置。現在,我有另一個功能,保留原始矩陣不變,並在新矩陣中進行轉置。簽名是:
Mat<T, cols, rows> transpose() const
請注意,列和行被交換。
現在,我叫它爲:
Mat<int, 3, 4> d;
// Fill this matrix
Mat<int, 4, 3> e = d.transpose();
這仍然試圖調用的第一個方法。如果我將第二種方法重命名爲transpose2
並稱之爲,那就沒問題。有沒有辦法讓這兩個函數模糊不清?
你爲什麼不把它叫做'換位'? – LogicStuff
聲明'd'一個'const':'mat const d;' –
那時候當我重新學習C++的時候(比如你在做顯然),我讓其中一個是靜態的,另一個是方法;或者,我調用一個'getTranspose()'和另一個'transpose()'。 –