首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何重载无符号数组的运算符+?

如何重载无符号数组的运算符+?
EN

Stack Overflow用户
提问于 2018-04-07 02:27:03
回答 1查看 546关注 0票数 0

所以我需要重载运算符(+,-,*,/)来将其与无符号字符数组一起使用;无符号字符数组是一个数字;我写了这个(仅用于summ )

代码语言:javascript
复制
#include <iostream>
#include <string>
using namespace std;

class decimal
{
private:
    unsigned char dec[100];
    size_t size;
public:
    decimal(char* get)
    {
        size = strlen(get);
        for (int i = size - 1; i >= 0; i--, get++)
        {
            dec[i] = *get;
            cout << dec[i];
        }       
        cout << endl;
    }
    friend decimal operator + (decimal const &, decimal const &);
};

decimal operator + (decimal const &a, decimal const &b)
{
    int d = atoi((char *)a.dec) + atoi((char *)b.dec);
    string s = to_string(d);
    return decimal(s.c_str);
}

int main()
{
    decimal a("10004");
    decimal b("12");
    decimal c = a + b;
    system("pause");
    return 0;
}

但它给了我错误

代码语言:javascript
复制
error C3867: 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>::c_str': non-standard syntax; use '&' to create a pointer to member
error C2512: 'decimal': no appropriate default constructor available

我该如何解决这个问题呢?

EN

回答 1

Stack Overflow用户

发布于 2018-04-07 02:45:45

将构造函数的参数更改为const...

代码语言:javascript
复制
class decimal
{
private:
    unsigned char dec[100];
    size_t size;
public:
    decimal(const char* get)
    {
        size = strlen(get);
        for (int i = size - 1; i >= 0; i--, get++)

另外,将c_str更改为c_str()

到目前为止,更好的方法是将构造函数参数从const char* get更改为const std::string &get),然后从该参数开始。

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

https://stackoverflow.com/questions/49698977

复制
相关文章

相似问题

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