【发布时间】:2022-12-11 05:04:59
【问题描述】:
我在访问 _maxx 时遇到问题,它说:./ScoreBoard.hpp:20:38: 错误:成员访问不完整类型“WINDOW”(又名“_win_st”) mvwprintw(score_win, 0, score_win->_maxx - 10, "%11llu", score); ^ /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/curses.h:322:16: 注意:'_win_st' 的前向声明 typedef 结构 _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);
}
};
【问题讨论】:
-
WINDOW是 opaque data type。你不应该真正访问它的内部数据,只使用函数。 -
奇怪,我遵循的教程就像我做的那样,谢谢顺便说一句
-
这会让我个人开始怀疑该教程的质量。好处是有许多关于 ncurses 的教程和参考资料。 :) 例如this one,我自己用过很多次。
标签: c++ ncurses member-access