为什么我的main.cpp无法打印头文件中的任何内容

时间:2018-08-28 18:57:08

标签: c++

我已经创建了头文件和main.cpp

根据我的理解,应该在shapeMaker.h文件中创建类和函数,然后在shapeMaker.cpp中放入功能,最后对类及其对象进行分类,以将其值显示在屏幕上。 / p>

但是,当我在repl。上执行此操作时,屏幕上不会打印任何内容。

该代码不会崩溃或尖叫任何错误,表明一切都已正确连接。但是,当我按下run时,屏幕空白。甚至诸如cout << "hello world"之类的东西也不会显示。我将如何运行此代码以在屏幕上显示?

ShapeMaker.h

#include <iostream>
#include <string>

class ShapeMaker {

  private:

  int width = 5;
  int height = 5;
  char symbol = '*';

  protected:

  int returnCanvasWidth(int);
  int returnCanvasHeight(int);
  char returnDrawSymbol(char);
  void setCanvasHeight(int);
  void setDrawingSymbol(char);

  public:

  void drawMidCanvasHorizontal();
  void drawMidCanvasVerticalLine();
  void drawCanvasWidthSizeFilledSqaure();
  void drawCanvasWidthSizedSmilingFace();

};

ShapeMaker.cpp

#include "ShapeMaker.h"

int ShapeMaker::returnCanvasWidth(int width){
  std::cout << width;
  return width;
}

int ShapeMaker::returnCanvasHeight(int height){
  std::cout << height;
  return height;
}

char ShapeMaker:: returnDrawSymbol(char symbol){
  std::cout << symbol;
  return symbol;
}

...

main.cpp

#include "ShapeMaker.h"

int main() {
  ShapeMaker s;
  return 0;
}

2 个答案:

答案 0 :(得分:2)

问题

  • 您只能在ShapeMaker方法中调用main的空构造函数和析构函数,而您自己没有提供实现(因此使用默认实现)。因此很明显,您的程序不会在main中打印任何内容。

  • 即使诸如cout <<之类的东西都不会显示。:如果您从不执行这些命令,终端将不会向您问候“ hello world”

解决方案

要在当前示例中输出"hello world"而无需更改main方法,请执行以下操作:

添加您自己的默认构造函数声明

public:
ShapeMaker();

ShapeMaker.h

添加您自己的默认构造函数定义

ShapeMaker::ShapeMaker() { 
    std::cout << "hello world";
}

ShapeMaker.cpp

答案 1 :(得分:0)

您刚刚创建了shape对象,由于没有可打印的构造函数,因此您必须调用成员函数来打印对象。

您可以像下面这样调用成员函数:

s.drawMidCanvasHorizontal();

顺便说一句,我看不到drawMidCanvasHorizo​​ntal()函数的任何实现,因此您必须首先编写它的用途。