相关疑难解决方法(0)

使用运算符进行隐式转换

这部分是受这个问题的启发.当我写代码时:

void test(std::string inp)
{
  std::cout << inp << std::endl;
}

int main(void)
{
  test("test");
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

"test"隐式转换const char*std::string,我得到预期的输出.但是,当我尝试这个:

std::string operator*(int lhs, std::string rhs)
{
  std::string result = "";

  for(int i = 0; i < lhs; i++)
  {
    result += rhs;
  }

  return result;
}

int main(void)
{
  std::string test = 5 * "a";
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

我得到编译器错误,invalid operands of types 'int' and 'const char [2]' to binary 'operator*'."a" …

c++ operator-overloading

10
推荐指数
1
解决办法
208
查看次数

"必须具有类或枚举类型的参数"实际上意味着什么

我有一个头文件和一个.cpp文件.我需要为我的.h文件编写函数,但是在我完全完成一个骨架.cpp文件之前我得到一个错误.

Money.h

#ifndef MONEY_H
#define MONEY_H

#include <iostream>
#include <iomanip>

using namespace std;

class Money
{
public:
   Money(int dollars, int cents);
   Money operator+(const Money& b) const;
   Money operator-(const Money& b) const;
   Money operator*(double m) const;
   Money operator/(double d) const;

   void print() const;

private:
   int dollars;
   int cents;
};

#endif
Run Code Online (Sandbox Code Playgroud)

Money.cpp

#include "Money.h"

Money::Money(int dollars, int cents){

}
Money operator+(const Money& b) {

}
Money operator-(const Money& b) {

}
Money operator*(double m) {

}
Money operator/(double d) {

}

void …
Run Code Online (Sandbox Code Playgroud)

c++

6
推荐指数
1
解决办法
2万
查看次数

标签 统计

c++ ×2

operator-overloading ×1