首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用字符串初始化我的类的对象

使用字符串初始化我的类的对象
EN

Stack Overflow用户
提问于 2020-05-16 02:46:06
回答 1查看 103关注 0票数 1

我正在写一个多项式类:

代码语言:javascript
复制
#pragma once
#include<iostream>

using namespace std;

class polynomial
{
private:
    int coeff[300];
    int expo[300];
    int counter;
public:
    polynomial();
    polynomial(const polynomial&);
    polynomial operator-()const;
    polynomial& operator=(const polynomial);
    polynomial operator*(const polynomial)const;
    polynomial operator+(const polynomial)const;
    polynomial operator-(const polynomial)const;
    polynomial operator+(int)const;
    friend polynomial operator+(int,const polynomial);
    polynomial operator-(int)const;
    friend polynomial operator-(int,const polynomial);
    polynomial operator*(int)const;
    polynomial operator/(polynomial);
    friend polynomial operator*(int,const polynomial);
    friend ostream& operator<<(ostream&, polynomial&);
    friend istream& operator>>(istream&, polynomial&);

};

我得到一个字符串形式的多项式:带有cin对象的+3x^2-10x+1,然后在istream& operator>>(istream&, polynomial&)中,我将提取它的系数和指数。

除了我重载的构造函数和复制构造函数和操作符之外,我应该能够初始化一个多项式类的对象,如下所示:

Polynomial p1 = "+5x^2-3";//(in main)

我尝试了两次重载我的复制赋值操作符(除了已经在代码中重载了另一个字符串),如下所示:

polynomial operator=(string)

但我失败了。

我真的不知道,如何用字符串初始化多项式类的对象。有什么方法可以做到这一点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-16 02:48:33

您需要的是一个接受std::string类型的单个参数的converting constructor

构造函数的定义应该类似于:

代码语言:javascript
复制
polynomial(std::string const &s) {
  // use s to construct
}

但是,您仍然不能以您想要的方式构造polynomial对象:

代码语言:javascript
复制
polynomial p1 = "+5x^2-3"; 

因为编译器需要进行2次隐式转换才能调用适当的构造函数。请注意,您仍然可以执行以下操作:

代码语言:javascript
复制
polynomial p1 {"+5x^2-3"}; 
// or
polynomial p1 = std::string{"+5x^2-3"}; 

要解决此问题,可以添加一个接受char const *并委托给std::string构造函数的构造函数:

代码语言:javascript
复制
polynomial(char const * c) : polynomial(std::string{c}) {}

现在你的代码片段应该可以工作了。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61826282

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档