gpt4 book ai didi

c++ - 用字符串初始化我的类的对象

转载 作者:行者123 更新时间:2023-12-02 10:02:39 25 4
gpt4 key购买 nike

我正在写一个多项式类:

#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&);

};

我收到多项式作为字符串,如: +3x^2-10x+1cin对象,然后在 istream& operator>>(istream&, polynomial&)我将提取它的系数和指数。

除了我重载的构造函数和复制构造函数和运算符之外,我应该能够初始化类多项式的对象,例如:
Polynomial p1 = "+5x^2-3";//(in main)
我已经尝试过两次重载我的复制赋值运算符(除了它已经在另一个字符串中的代码中),例如:
polynomial operator=(string)
我失败了。

我真的不知道如何用字符串初始化类多项式的对象。有哪些方法可以做到?

最佳答案

您需要的是 converting constructor它采用 std::string 的单个参数类型。

构造函数定义类似于:

polynomial(std::string const &s) {
// use s to construct
}

但是,您仍然无法构造 polynomial反对你想要的方式:
polynomial p1 = "+5x^2-3"; 

因为编译器需要进行 2 次隐式转换才能调用适当的构造函数。请注意,您仍然可以执行以下操作:
polynomial p1 {"+5x^2-3"}; 
// or
polynomial p1 = std::string{"+5x^2-3"};

为了解决这个问题,您可以添加一个构造函数,它采用 char const * ,并委托(delegate)给 std::string构造函数:
polynomial(char const * c) : polynomial(std::string{c}) {}

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

关于c++ - 用字符串初始化我的类的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61826282/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com