私はラップトップでMacと同じコードを実行していますが、はうまく動作します。 (特定のMacライブラリを使用していない)。今私は私のPCにコードを送信しようとしている、私は〜300行のエラーが発生します。Windowsではコンパイルエラーですが、Macではありません
CMD-OUTPUT:
C:\Users\joel\Desktop\Hej>g++ -std=c++11 dice.cpp
dice.cpp: In member function 'std::string dice::getOne()':
dice.cpp:28:19: error: ambiguous overload for 'operator=' (operand types are 'st
d::string {aka std::basic_string<char>}' and 'std::basic_ostream<char>::__ostrea
m_type {aka std::basic_ostream<char>}')
return one = cout << "------" << "\n! !\n! x !\n! !\n" << "---
---" << endl; //one
^
dice.cpp:28:19: note: candidates are:
In file included from c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\string:52:0,
from c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\bits\locale_cla
sses.h:40,
from c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\bits\ios_base.h
:41,
from c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\ios:42,
from c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\ostream:38,
from c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\iostream:39,
from dice.cpp:3:
c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\bits\basic_string.h:554:7: note: std:
:basic_string<_CharT, _Traits, _Alloc>& std::basic_string<_CharT, _Traits, _Allo
c>::operator=(const _CharT*) [with _CharT = char; _Traits = std::char_traits<cha
r>; _Alloc = std::allocator<char>] <near match>
operator=(const _CharT* __s)
^
c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\bits\basic_string.h:554:7: note: no
known conversion for argument 1 from 'std::basic_ostream<char>::__ostream_type
{aka std::basic_ostream<char>}' to 'const char*'
c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\bits\basic_string.h:565:7: note: std:
:basic_string<_CharT, _Traits, _Alloc>& std::basic_string<_CharT, _Traits, _Allo
c>::operator=(_CharT) [with _CharT = char; _Traits = std::char_traits<char>; _Al
loc = std::allocator<char>] <near match>
operator=(_CharT __c)
^
c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\bits\basic_string.h:565:7: note: no
known conversion for argument 1 from 'std::basic_ostream<char>::__ostream_type
{aka std::basic_ostream<char>}' to 'char'
dice.cpp: In member function 'std::string dice::getTwo()':
dice.cpp:31:19: error: ambiguous overload for 'operator=' (operand types are 'st
d::string {aka std::basic_string<char>}' and 'std::basic_ostream<char>::__ostrea
m_type {aka std::basic_ostream<char>}')
return two = cout << "------" << "\n! x!\n! !\n!x !\n" << "---
---" << endl; //two
^
dice.cpp:31:19: note: candidates are:
In file included from c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\string:52:0,
from c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\bits\locale_cla
sses.h:40,
from c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\bits\ios_base.h
:41,
from c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\ios:42,
from c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\ostream:38,
from c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\iostream:39,
from dice.cpp:3:
c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\bits\basic_string.h:554:7: note: std:
:basic_string<_CharT, _Traits, _Alloc>& std::basic_string<_CharT, _Traits, _Allo
c>::operator=(const _CharT*) [with _CharT = char; _Traits = std::char_traits<cha
r>; _Alloc = std::allocator<char>] <near match>
operator=(const _CharT* __s)
^
c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\bits\basic_string.h:554:7: note: no
known conversion for argument 1 from 'std::basic_ostream<char>::__ostream_type
{aka std::basic_ostream<char>}' to 'const char*'
c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\bits\basic_string.h:565:7: note: std:
:basic_string<_CharT, _Traits, _Alloc>& std::basic_string<_CharT, _Traits, _Allo
c>::operator=(_CharT) [with _CharT = char; _Traits = std::char_traits<char>; _Al
loc = std::allocator<char>] <near match>
operator=(_CharT __c)
^
c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\bits\basic_string.h:565:7: note: no
known conversion for argument 1 from 'std::basic_ostream<char>::__ostream_type
{aka std::basic_ostream<char>}' to 'char'
dice.cpp: In member function 'std::string dice::getThree()':
dice.cpp:34:21: error: ambiguous overload for 'operator=' (operand types are 'st
d::string {aka std::basic_string<char>}' and 'std::basic_ostream<char>::__ostrea
m_type {aka std::basic_ostream<char>}')
return three = cout << "------" << "\n!x !\n! x !\n! x!\n" << "
------" << endl; //three
^
dice.cpp:34:21: note: candidates are:
In file included from c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\string:52:0,
from c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\bits\locale_cla
sses.h:40,
from c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\bits\ios_base.h
:41,
from c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\ios:42,
from c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\ostream:38,
from c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\iostream:39,
from dice.cpp:3:
c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\bits\basic_string.h:554:7: note: std:
:basic_string<_CharT, _Traits, _Alloc>& std::basic_string<_CharT, _Traits, _Allo
c>::operator=(const _CharT*) [with _CharT = char; _Traits = std::char_traits<cha
r>; _Alloc = std::allocator<char>] <near match>
operator=(const _CharT* __s)
^
c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\bits\basic_string.h:554:7: note: no
known conversion for argument 1 from 'std::basic_ostream<char>::__ostream_type
{aka std::basic_ostream<char>}' to 'const char*'
c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\bits\basic_string.h:565:7: note: std:
:basic_string<_CharT, _Traits, _Alloc>& std::basic_string<_CharT, _Traits, _Allo
c>::operator=(_CharT) [with _CharT = char; _Traits = std::char_traits<char>; _Al
loc = std::allocator<char>] <near match>
operator=(_CharT __c)
^
c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\bits\basic_string.h:565:7: note: no
known conversion for argument 1 from 'std::basic_ostream<char>::__ostream_type
{aka std::basic_ostream<char>}' to 'char'
dice.cpp: In member function 'std::string dice::getFour()':
dice.cpp:37:20: error: ambiguous overload for 'operator=' (operand types are 'st
d::string {aka std::basic_string<char>}' and 'std::basic_ostream<char>::__ostrea
m_type {aka std::basic_ostream<char>}')
return four = cout << "------" << "\n! x x !\n! !\n! x x !\n" << "-
-----" << endl; //four
^
dice.cpp:37:20: note: candidates are:
In file included from c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\string:52:0,
from c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\bits\locale_cla
sses.h:40,
from c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\bits\ios_base.h
:41,
from c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\ios:42,
from c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\ostream:38,
from c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\iostream:39,
from dice.cpp:3:
c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\bits\basic_string.h:554:7: note: std:
:basic_string<_CharT, _Traits, _Alloc>& std::basic_string<_CharT, _Traits, _Allo
c>::operator=(const _CharT*) [with _CharT = char; _Traits = std::char_traits<cha
r>; _Alloc = std::allocator<char>] <near match>
operator=(const _CharT* __s)
^
c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\bits\basic_string.h:554:7: note: no
known conversion for argument 1 from 'std::basic_ostream<char>::__ostream_type
{aka std::basic_ostream<char>}' to 'const char*'
c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\bits\basic_string.h:565:7: note: std:
:basic_string<_CharT, _Traits, _Alloc>& std::basic_string<_CharT, _Traits, _Allo
c>::operator=(_CharT) [with _CharT = char; _Traits = std::char_traits<char>; _Al
loc = std::allocator<char>] <near match>
operator=(_CharT __c)
^
c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\bits\basic_string.h:565:7: note: no
known conversion for argument 1 from 'std::basic_ostream<char>::__ostream_type
{aka std::basic_ostream<char>}' to 'char'
dice.cpp: In member function 'std::string dice::getFive()':
dice.cpp:40:20: error: ambiguous overload for 'operator=' (operand types are 'st
d::string {aka std::basic_string<char>}' and 'std::basic_ostream<char>::__ostrea
m_type {aka std::basic_ostream<char>}')
return five = cout << "------" << "\n! x x !\n! x !\n! x x !\n" << "--
----" << endl; //five
^
dice.cpp:40:20: note: candidates are:
In file included from c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\string:52:0,
from c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\bits\locale_cla
sses.h:40,
from c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\bits\ios_base.h
:41,
from c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\ios:42,
from c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\ostream:38,
from c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\iostream:39,
from dice.cpp:3:
c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\bits\basic_string.h:554:7: note: std:
:basic_string<_CharT, _Traits, _Alloc>& std::basic_string<_CharT, _Traits, _Allo
c>::operator=(const _CharT*) [with _CharT = char; _Traits = std::char_traits<cha
r>; _Alloc = std::allocator<char>] <near match>
operator=(const _CharT* __s)
^
c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\bits\basic_string.h:554:7: note: no
known conversion for argument 1 from 'std::basic_ostream<char>::__ostream_type
{aka std::basic_ostream<char>}' to 'const char*'
c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\bits\basic_string.h:565:7: note: std:
:basic_string<_CharT, _Traits, _Alloc>& std::basic_string<_CharT, _Traits, _Allo
c>::operator=(_CharT) [with _CharT = char; _Traits = std::char_traits<char>; _Al
loc = std::allocator<char>] <near match>
operator=(_CharT __c)
^
c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\bits\basic_string.h:565:7: note: no
known conversion for argument 1 from 'std::basic_ostream<char>::__ostream_type
{aka std::basic_ostream<char>}' to 'char'
dice.cpp: In member function 'std::string dice::getSix()':
dice.cpp:43:18: error: ambiguous overload for 'operator=' (operand types are 'st
d::string {aka std::basic_string<char>}' and 'std::basic_ostream<char>::__ostrea
m_type {aka std::basic_ostream<char>}')
return six = cout << "------" << "\n! x x !\n! x x !\n! x x !\n" << "---
---" << endl; //six
^
dice.cpp:43:18: note: candidates are:
In file included from c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\string:52:0,
from c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\bits\locale_cla
sses.h:40,
from c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\bits\ios_base.h
:41,
from c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\ios:42,
from c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\ostream:38,
from c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\iostream:39,
from dice.cpp:3:
c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\bits\basic_string.h:554:7: note: std:
:basic_string<_CharT, _Traits, _Alloc>& std::basic_string<_CharT, _Traits, _Allo
c>::operator=(const _CharT*) [with _CharT = char; _Traits = std::char_traits<cha
r>; _Alloc = std::allocator<char>] <near match>
operator=(const _CharT* __s)
^
c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\bits\basic_string.h:554:7: note: no
known conversion for argument 1 from 'std::basic_ostream<char>::__ostream_type
{aka std::basic_ostream<char>}' to 'const char*'
c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\bits\basic_string.h:565:7: note: std:
:basic_string<_CharT, _Traits, _Alloc>& std::basic_string<_CharT, _Traits, _Allo
c>::operator=(_CharT) [with _CharT = char; _Traits = std::char_traits<char>; _Al
loc = std::allocator<char>] <near match>
operator=(_CharT __c)
^
c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\bits\basic_string.h:565:7: note: no
known conversion for argument 1 from 'std::basic_ostream<char>::__ostream_type
{aka std::basic_ostream<char>}' to 'char'
dice.cpp: In function 'int main()':
dice.cpp:63:20: error: 'numeric_limits' is not a member of 'std'
if (cin.ignore(std::numeric_limits<streamsize>::max(),'\n')){
^
dice.cpp:63:50: error: expected primary-expression before '>' token
if (cin.ignore(std::numeric_limits<streamsize>::max(),'\n')){
^
dice.cpp:63:57: error: no matching function for call to 'max()'
if (cin.ignore(std::numeric_limits<streamsize>::max(),'\n')){
^
dice.cpp:63:57: note: candidates are:
In file included from c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\vector:60:0,
from dice.cpp:2:
c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\bits\stl_algobase.h:216:5: note: temp
late<class _Tp> const _Tp& std::max(const _Tp&, const _Tp&)
max(const _Tp& __a, const _Tp& __b)
^
c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\bits\stl_algobase.h:216:5: note: te
mplate argument deduction/substitution failed:
dice.cpp:63:57: note: candidate expects 2 arguments, 0 provided
if (cin.ignore(std::numeric_limits<streamsize>::max(),'\n')){
^
In file included from c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\vector:60:0,
from dice.cpp:2:
c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\bits\stl_algobase.h:260:5: note: temp
late<class _Tp, class _Compare> const _Tp& std::max(const _Tp&, const _Tp&, _Com
pare)
max(const _Tp& __a, const _Tp& __b, _Compare __comp)
^
c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\bits\stl_algobase.h:260:5: note: te
mplate argument deduction/substitution failed:
dice.cpp:63:57: note: candidate expects 3 arguments, 0 provided
if (cin.ignore(std::numeric_limits<streamsize>::max(),'\n')){
^
ファイル:
//dice
#include <vector>
#include <iostream>
#include <string>
#include <cstdlib>
#include <ctime>
using namespace std;
class dice{
private:
string one;
string two;
string three;
string four;
string five;
string six;
public:
dice(){srand(time(NULL));};
dice(string one, string two, string three, string four, string five, string six){
this->one=one;
this->two=two;
this->three=three;
this->four=four;
this->five=five;
this->six=six;
}
string getOne(){
return one = cout << "------" << "\n! !\n! x !\n! !\n" << "------" << endl; //one
}
string getTwo(){
return two = cout << "------" << "\n! x!\n! !\n!x !\n" << "------" << endl; //two
}
string getThree(){
return three = cout << "------" << "\n!x !\n! x !\n! x!\n" << "------" << endl; //three
}
string getFour(){
return four = cout << "------" << "\n! x x !\n! !\n! x x !\n" << "------" << endl; //four
}
string getFive(){
return five = cout << "------" << "\n! x x !\n! x !\n! x x !\n" << "------" << endl; //five
}
string getSix(){
return six = cout << "------" << "\n! x x !\n! x x !\n! x x !\n" << "------" << endl; //six
}
};
int main(){ //main
dice myDice = dice(); //referens
string c, stop="stop";
while(1){
cout << "Generate two random dice: press [ENTER]\n";
//random funktion nedan
string c;
if (cin.ignore(std::numeric_limits<streamsize>::max(),'\n')){
for(int i=0;i<2;i++){ //select two random numbers
int num;
int min=1,max=6;
num = (rand() % max + min);
//if
if (num==1){
myDice.getOne();
}else if(num==2){
myDice.getTwo();
}else if(num==3){
myDice.getThree();
}else if(num==4){
myDice.getFour();
}else if(num==5){
myDice.getFive();
}else if(num==6){
myDice.getSix();
}else{
cout << "higher than 6 or lower than 1. If that happens, i'm quitting programming (may this function never be used)\n";
}
}
}
}
return 0;
}
この原因は何?私はg ++を使ってウィンドウをコンパイルしています。誰かがWindows上でこのコードを実行し、実際にWindows関連であることを確認してください。
私はなぜエラーが発生するのか(なぜMac上で動作するのか)は一般的にはわかりませんが、 'return ... = cout << ...'はあなたがしたいことではないでしょう。 'cout'はコマンドラインに表示されます。返すものはありません。また、両方のシステムで同じgcc-version/compilerフラグを持っていますか? – Hayt
'gcc'バージョンを更新することで問題は解決します。 – Shravan40
'std :: cout << X;'は 'std :: ostream&'を返します。これは文字列に変換できません。 –