2

strcmpに問題があります。

これは私のコードです。

while (strcmp("m",wood) !=0 || strcmp("j",wood) !=0 || strcmp("o",wood) !=0){
    cout << "(m for mahogany, o for oak, or p for pine): ";
cin >> wood;
}

そして、これは私のエラーです:

dining.cpp: In member function ‘void DiningSet::woodType()’:
dining.cpp:76:24: error: invalid conversion from ‘char’ to ‘const char*’ [-fpermissive]
/usr/include/string.h:143:12: error:   initialising argument 2 of ‘int strcmp(const char*, const char*)’ [-fpermissive]
dining.cpp:76:48: error: invalid conversion from ‘char’ to ‘const char*’ [-fpermissive]
/usr/include/string.h:143:12: error:   initialising argument 2 of ‘int strcmp(const char*, const char*)’ [-fpermissive]
dining.cpp:76:72: error: invalid conversion from ‘char’ to ‘const char*’ [-fpermissive]
/usr/include/string.h:143:12: error:   initialising argument 2 of ‘int strcmp(const char*, const char*)’ [-fpermissive]
4

2 に答える 2

12

woodタイプは:で使用charする文字列、つまり、である必要があります。char*strcmp()

への変更:

while ('m' != wood && 'j' != wood && 'o' != wood)
于 2012-03-13T11:06:36.210 に答える
0

エラーは、2番目の引数に問題があることを示しています。それはconst char *

の署名strcmpは次のとおりです。

int strcmp ( const char * str1, const char * str2 );

于 2012-03-13T11:11:57.230 に答える