2014-01-17 121 views
0

我在学习C++并尝试了一些东西......以下代码给了我一个编译时错误,任何人都可以向我解释为什么,我有点困惑......我是假设它是cin >> playagain声明。感谢您的帮助。 (另外,如果我做任何其他的一般的C++错误,请让我知道)C++编译时错误

继承人的错误:

错误1错误C2679:二进制“>>”:没有运营商发现,这需要右手操作数'std :: string'(或没有可接受的转换)c:\ users \ abdo \ 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