C++ “错误:与'std::cin>>((Parardha*)this)->Parardha::mobile'中的'operator>>'不匹配”

C++ “错误:与'std::cin>>((Parardha*)this)->Parardha::mobile'中的'operator>>'不匹配”,c++,C++,好的,我是初学者,因此需要帮助解决这个错误。 非常感谢您的帮助: #include<iostream> class Parardha { private: char name[20]; int mobile[11]; public: void ask() { std::cout<<"Your Name Please! :"; std::cin >> name; std::c

好的,我是初学者,因此需要帮助解决这个错误。 非常感谢您的帮助:

    #include<iostream>
class Parardha
{
private:
    char name[20];
    int mobile[11];
public:
    void ask()
    {
        std::cout<<"Your Name Please! :";
        std::cin >> name;
        std::cout<<"Aapka Phone No. : ";
        std::cin>> mobile;
    }
    void print()
    {
        std::cout<<"Your Name is";
        std::cout<<name<< std::endl;
        std::cout<<"Aur aapka mobile number hai";
        std::cout<<mobile<< std::endl;
    }
};
int main()
{
Parardha rocks;
rocks.ask();
rocks.print();
}

我从我的指南中尝试过,我的No.2似乎没有任何关于C++ 11的想法。p> 正如Joachim Pileborg在评论中所说,mobile是一个整数数组,而不是一个可以容纳11位数字的整数。 问题就在这里

int mobile[11];    
取代

int mobile;
可能正在阅读的阵列教程将有助于理解它们是如何工作的。

由于您也只需要电话号码中的11位数字,所以您可以将手机存储为字符串,然后将其转换为int。 像这样的

private:
    std::string name;      <-- see difference here
    std::string mobile;    <-- see difference here
public:
    void ask()
    {
       //your code
    }
    void print()
    {
        std::cout<<"Your Name is";
        std::cout<<name<< std::endl;
        std::cout<<"Aur aapka mobile number hai";
        std::istringstream sstream(mobile);    
        int cellNum;
        sstream >> cellNum;
        std::cout<<cellNum<< std::endl;
    }

成员变量mobile是由不同的11个整数组成的数组,而不是由11个数字组成的单个整数。std::istream&operator>>std::istream&is,int mobile[11]没有重载;除非你自己提供。std::ostream和OperatorTanks也一样,以便快速回复!我不太擅长这一点,所以请您具体说明我需要更改什么@谢谢你@sam2090以及Joachim和πάνταῥεῖ! 谢谢不过,这有一个小问题,特别是当OP输入11位数字时,输入运算符会将字符串终止符写入边界之外。更好地对name和mobile使用std::string@ParardhaSarmah@JoachimPileborg谢谢修好了