Я использую тот же код на своем ноутбуке, который является mac, и он отлично работает. (не используя какие-либо конкретные mac-библиотеки). Теперь, когда я пытаюсь отправить код на свой компьютер, я получаю ~ 300 строк ошибок.Ошибка компилятора в окнах, но не на mac
CMD-ВЫВОД:
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?
Я не знаю, почему происходит ошибка (или почему она работает на Mac), но ваш 'return ... = cout << ...' скорее всего не то, что вы хотите сделать. 'cout' печатает в командной строке. Возвращаться нечего. Также есть ли у вас одинаковые флаги gcc-version/compiler на обеих системах? – Hayt
Обновление версии 'gcc' должно решить вашу проблему. – Shravan40
'std :: cout << X;' возвращает 'std :: ostream &'. Это не конвертируется в строку. –