c++ 错误:成员访问不完整的类型“WINDOW”(aka“_win_st”)

w8f9ii69  于 2022-12-15  发布在  其他
关注(0)|答案(1)|浏览(95)

我访问_maxx时遇到问题,它显示:./记分板.第页:20:38:错误:成员访问不完整的类型'WINDOW'(又名'_win_st')mvwprintw(得分_win,0,得分_win-〉_maxx - 10,“%11llu”,得分);^ /库/开发人员/命令行工具/软件开发工具包/MacOSX.sdk/usr/include/curses.h:322:16:注意:类型定义结构"_win_st WINDOW“的前向声明;
这是我的代码:

#pragma once

class Scoreboard {
  protected:
  WINDOW * score_win;
  public :
  Scoreboard(){

  }
  Scoreboard(int width, int y, int x){
    score_win = newwin(1, width, y, x);
  }
  void initialize(int initial_score){
    this->clear();
    mvwprintw(score_win, 0, 0, "Score: ");
    updateScore(initial_score);
    this->refresh();
  }
  void updateScore(int score){
    mvwprintw(score_win, 0, score_win->_maxx - 10, "%11llu", score);
  }
  void clear(){
    wclear(score_win);
  }
  void refresh(){
    wrefresh(score_win);
  }

};
axzmvihb

axzmvihb1#

正如在注解中提到的,WINDOW可能是不透明的。这是ncurses的一个可配置特性,在MacOS SDK中使用。在curses.h的顶部,您可能会看到

/* These are defined only in curses.h, and are used for conditional compiles */
#define NCURSES_VERSION_MAJOR 5
#define NCURSES_VERSION_MINOR 7
#define NCURSES_VERSION_PATCH 20081102

/* This is defined in more than one ncurses header, for identification */
#undef  NCURSES_VERSION
#define NCURSES_VERSION "5.7"
  • 不透明 * 功能于2007年3月添加:
+ add NCURSES_OPAQUE symbol to curses.h, will use to make structs
          opaque in selected configurations.

不使用WINDOW结构体的成员,而是使用一些函数来读取数据:

  • getmaxx做的正是您想要的,但它是为遗留应用程序(如BSD curses)设计的
  • getmaxyx是X/Open Curses的等价物,它结合了getmaxxgetmaxy

X/Open Curses没有指定WINDOW(或其他类型)是否不透明,但也没有提到_maxx等结构体成员,便携式应用程序应该首选标准化的函数。

相关问题