-1
我有這個C++類。C++從類到char的隱式轉換*
class Dinosaur {
public:
Dinosaur();
...
private:
char* name_str_pointer;
...
}
我試圖使用從恐龍隱式轉換爲char *所以這行的工作比較「迅猛」與name_str_pointer。
Dinosaur d();
strcmp(d, "velociraptor");
它返回
error: cannot convert ‘const Dinosaur’ to ‘const char*’ for argument ‘1’ to ‘int strcmp(const char*, const char*)’
我怎樣才能做到這一點?
詳細的,請看在隱式轉換部分['operator const char *()'](http://stackoverflow.com/a/16615725/2296458) – CoryKramer
'Dinosaur d();'不創建對象實例,它聲明瞭一個函數。 – interjay
這看起來(強烈)像x-y問題。在C++中,你不應該使用char *來存儲類中的數據。看看'std :: string','std :: vector'或'std :: array '而不是(取決於代碼中的要求)。由於您在客戶端代碼中使用了'strcmp',因此您應該使用'std :: string'而不是'char *'。無論哪種方式,如果您需要將實例與客戶端代碼中的字符串進行比較,那麼您的類應該實現一個'bool操作符==(const std :: string&)const'。 –
utnapistim