我有一個需要參數const std::string&
的方法。它通常會這樣使用:a.doSomething("some string")
但我想檢查提供的字符串是不是從nullptr
隱式構造的。當使用const std :: string&作爲方法參數類型時,處理nullptr const char *的正確方法是什麼?
一個例子:
#include <string>
struct A {
void doSomething(const std::string& arg) {
// if (arg == nullptr) throw; // This is what I want (doesn't work)
if(arg.empty()) // This does not detect nullptr
throw;
}
};
int main(int argc, char* argv[]) {
const char* null_str;
std::string s("");
A a;
a.doSomething(null_str);
a.doSomething(s);
return 0;
}
什麼是正確的,優雅的方式來做到這一點?我是否應該提供一個過載doSomething(const char* arg)
,在將它傳遞給另一個過載時明確構造std::string
之前,它將檢查arg
?
注意'「」'不是'nullptr'既不是'null_str',因爲它是一個未初始化的指針。 – LogicStuff
處理此問題的正確方法是訪問負責的開發人員小組。 – MSalters