簡體   English   中英

為什么我的 main.cpp 不打印頭文件中的任何內容

[英]Why does my main.cpp not print anything from my header file

我已經創建了我的頭文件和main.cpp

根據我的理解,您應該在shapeMaker.h文件中創建類和函數,然后將功能放在shapeMaker.cpp ,最后對類及其對象進行分類以將其值打印到屏幕上。

但是,當我在 repl.it 上執行此操作時,屏幕上不會打印任何內容。

代碼不會崩潰或發出任何錯誤,這表明一切都已正確連接。 但是,當我按下運行時,我遇到了一個空白屏幕。 甚至諸如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();

};

形狀制作工具

#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;
}

...

主程序

#include "ShapeMaker.h"

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

問題

  • 您只在main方法中調用ShapeMaker的空構造函數和析構函數,您自己沒有為其提供實現(因此使用默認實現)。 所以很明顯,你的程序不會在main打印任何內容。

  • 甚至諸如 cout << "hello world" 之類的東西也不會顯示。 :如果你從不執行這些命令,終端就不會用“hello world”來迎接你。

解決方案

為了在當前示例中輸出"hello world"而不更改main方法,請執行以下操作:

添加您自己的默認構造函數聲明

public:
ShapeMaker();

ShapeMaker.h

添加您自己的默認構造函數定義

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

ShapeMaker.cpp

您剛剛創建了 shape 對象,並且由於沒有構造函數可以打印某些內容,因此您必須調用成員函數來打印某些內容。

您可以像下面這樣調用成員函數:

s.drawMidCanvasHorizontal();

順便說一句,我看不到 drawMidCanvasHorizo​​ntal() 函數的任何實現,因此您必須首先編寫它的用途。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM