我面臨着以下問題在MS的Visual Studio 2015年MSVS 2015年,C++,帶有參數的構造函數調用導致錯誤
我有一個Hotel
類的重載構造函數的字符串參數。 當我嘗試創建一個使用重載,而不是默認的構造函數的對象,編譯器面臨以下錯誤:
Error C2664 'std::Hotel::Hotel(const std::Hotel &)': cannot convert argument 1 from 'const char [7]' to 'const std::Hotel &'
Hotel.h
namespace std {
class Hotel {
public:
string hotelName; // Hotel's name.
Hotel(); // Default constructor.
Hotel(string); // Overloaded constructor.
~Hotel(); // Default destructor.
};
}
Hotel.cpp
namespace std {
Hotel::Hotel() { // // Default constructor.
}
Hotel::Hotel(string name) { // // Overloaded constructor.
hotelName = name;
}
}
main.cpp
int main() {
Hotel Palace("Palace");
}
在搜索過程中,我看到MSVS對字符串使用了兩種方法。而我找到的類似問題的解決方案是將"Palace"
轉換爲Hotel Palace(_T("Palace"));
同樣的事情發生時,我嘗試從重載構造函數創建一個具有非字符串作爲參數類型的對象。
這是必須明確與MSVS,或者我做錯了什麼?
任何幫助,將不勝感激。
你不應該把你自己的類放到'namespace std'中 –
你爲什麼使用std命名空間?你是否需要使用命名空間? – cup
還有很多其他代碼需要std命名空間標記...您認爲這是問題所在? – Diaman