【问题标题】:Can't put class with main function?不能把类与主要功能?
【发布时间】:2025-11-26 06:35:02
【问题描述】:

我正在做的事情是编写一个代码,专注于创建一个反转数字顺序的类。然后,这将被放入将消除任何尾随零的主代码中。我似乎无法理解课程是如何运作的以及我哪里出错了。这是我的代码:

数字.h

#pragma once
#include <iostream>
class Numbers
{
public:
int digit
private:
void Numbers::reverse();
};

数字.cpp

#include "Numbers.h
#include <iostream>

using namespace std;

void Numbers::reverse(){
int n, reversedNumber = 0, remainder;

cout << "Enter the number you would like to manipulate!   " << endl;
cin >> n;

while (n !=0)
{
remainder = n % 10;
reversedNumber = reversed Number * 10 + remainder;
n /= 10;
}
//return *this;
}

Main.cpp

#include "stdafx.h"
#include <iostream>
#include <iomanip>
#include <string>
#include "Numbers.h"

using namespace std;

int main()
{
Numbers.reverse;

system("pause");
return 0;
}

我似乎无法让 Numbers.cpp 中的反向函数在主函数中工作。我是 C++ 新手,不知道哪里出错了。任何帮助将不胜感激!

【问题讨论】:

  • 顺便说一句,调用函数或方法的语法是在名称末尾使用(),如Numbers.reverse()(这应该是Numbers::reverse(),因为Numbers 是一个类型,而不是一个类型的实例。)
  • 您没有进行函数调用。使用Numbers.reverse();
  • 你创建一个私有函数,这样访问它应该是静态公共的
  • Numbers.reverse() 不起作用,因为reverse 是一个成员函数,它是private。你需要拿起一本好的 C++ 书
  • 另外,创建Numbers 的实例或将reverse 函数声明为静态。

标签: c++ function class header member


【解决方案1】:

好的,您的代码中有很多错误或学习错误。您的头文件应类似于:

#pragma once

class Numbers
{
public:
  Numbers();
  ~Numbers();

  int Reverse(int input);  // Function is 'public'.
};

然后您的 CPP 文件将是(部分取自 S.O. post here):

#include "Numbers.h"

Numbers::Numbers()
{
}

Numbers::~Numbers()
{
}

// No need to store the value in 'digit' since this
// is just an algorithm which can return the result.
int Numbers::Reverse(int input)
{
  int ret = 0;

  while(input > 0)
  {
    ret = ret * 10 + (input % 10);
    input = input / 10;
  }

  return ret; // Return the reversed number and let the user decide what to do.
}

然后你可以按如下方式使用你的类:

#include "Numbers.h"
#include <iostream>

using namespace std;

int main()
{
  int num;

  cout << "Enter a number to reverse: ";
  cin >> num;

  Numbers numClass;

  cout << "Reversed number is: " << numClass.Reverse(num) << endl;

  return 0;
}

【讨论】:

  • 如果您调用numClass(2400),它将返回42,而返回0042。任何尾随零都将被删除。
最近更新 更多