2014-01-17 9 views
0

Я изучаю C++ и пытаюсь кое-что изложить ... Следующий код дает мне ошибку времени компиляции, может ли кто-нибудь объяснить мне, почему, я немного смущен ... Я предполагая, что это заявление cin >> playagain. Спасибо вам за помощь. (Также, если я делаю любого другого генерала C++ ошибки, пожалуйста, дайте мне знать)C++ ошибка времени компиляции

Heres ошибка:

Ошибка 1 Ошибка C2679: бинарный «>>»: ни один оператор не найден, который берет правую руку операнд типа 'станд :: строка' (или нет приемлемой конверсии) C: \ Users \ Абдо \ Documents \ Visual Studio 2012 \ Projects \ ConsoleApplication1 \ ConsoleApplication1 \ consoleapplication1.cpp 45 1 ConsoleApplication1

в любом случае, в том числе #include <string> исправлена ​​проблема, спасибо 0x499602D2

#include "stdafx.h" 
#include <iostream> 

using namespace std; 
class calculatorc1 { 
public: 
    calculatorc1(); 
    ~calculatorc1(); 
    int multnums(int a, int b); 
protected: 
    int result; 
}; 

calculatorc1::calculatorc1() { 
} 
calculatorc1::~calculatorc1() { 
} 



int calculatorc1::multnums(int a, int b) { 
    int result = a * b; 
    return result; 
} 


int main() 
{ 
    string playagain; 
    bool calcing = true; 
    while (calcing) { 
    calculatorc1 c; 
    int x; 
    int y; 
    cout << "first num\n"; 
    cin >> x; 
    cout << "second\n"; 
    cin >> y; 
    cout << c.multnums(x, y) << "\n"; 
    cout << "mul again? (y/n)\n"; 
    cin >> playagain; 
    if (playagain == "n") { 
     calcing = false; 
     system("pause"); 
    } 
    } 

} 
+2

Серьезно? Вы не скажете нам, что такое ошибка? Вы ожидаете, что мы догадаемся? – John3136

+0

Какая ошибка? – 0x499602D2

+2

Почему я вижу так много вопросов «этот код дает ошибку» без указанной ошибки? Как люди думают, что не имеет значения конкретная ошибка в вопросе? – Jack

ответ

4

Я считаю, что проблема заключается в том, что вы не включаете заголовок <string>, поэтому вы получаете ошибку времени компиляции, потому что string не был определен в программе. Вам понадобится эта строка, чтобы исправить эту проблему:

#include <string> 
+0

Кто знает, включает ли его еще один заголовок (включая stdafx.h), но это мое предположение. – chris

+0

@chris Лучше безопасно, чем жаль! :) – 0x499602D2

+0

Когда вы включаете (по крайней мере, когда вы используете Visual C++, какой OP с тех пор, как есть stdafx.h), вы получаете часть , IIRC достаточно, чтобы вы могли объявить строку без ошибок, что может привести вас к предположим, что проблема не является отсутствующим заголовком, когда вы не можете сделать что-то еще позже. Я был укушен этим сам, когда некоторые заголовки реорганизовались между выпусками VC++. –

0

Я скопировал этот файл и запустил его и получил две ошибки.

Первый был ошибкой компилятора на #include "stdafx.h" (заявив, что он не смог найти файл). Как только я его удалю, программа скомпилирована.

Вторая ошибка была во время выполнения после умножения чисел. Он сказал, что «пауза» не найдена (она работает в некоторых средах, а в моем нет).

Это нормально работает с чистыми целыми типами, но обработка ошибок не выполняется. 44.0 вызвал ошибку.

Не могли бы вы описать, что вы видите, и что вы ожидаете?

+0

Первый - для предварительно скомпилированных заголовков MSVC, что означает, что OP, вероятно, находится в Windows, который по-прежнему может не иметь команды паузы, даже если он по умолчанию. Если это так, команда по-прежнему может вести себя не так, как ожидалось, так что да, хорошо избегать. – chris

Смежные вопросы