【问题标题】:invalid initialization of non-const reference of type from an rvalue of type ‘<brace-enclosed initializer list>’从“<大括号封闭的初始化列表>”类型的右值对类型的非常量引用进行无效初始化
【发布时间】:2016-05-21 16:22:03
【问题描述】:

我没有找到任何解决此错误的方法:从类型为“”的右值中对类型为“Controller&”的非常量引用进行无效初始化

在这个函数中:

QTPlay::QTPlay(Controller &c,QWidget *parent) : c{ c }, QWidget{ parent }
{
    this->initGUI();
    this->currentMovie = this->c.repo.movies;
    this->populaterepo();
}

这是对象:

class QTPlay : public QWidget
{
private:
    Q_OBJECT
public:

QTPlay(Controller &c, QWidget *parent =0);
private:
Controller &c;
std::vector<Movie> currentMovie;

QListWidget* repo;
QLineEdit* title;
QLineEdit* genre;
QLineEdit* year;
QLineEdit* likes;
QLineEdit* trailer;
QPushButton* addButton;
QPushButton* deleteButton;
QPushButton* filterButton;
QPushButton* moveOneMovieButton;
QPushButton* playmovieButton;
QPushButton* nextmovieButton;

QListWidget* playList;

void initGUI();
void populaterepo();
void populatePlaylist();
int getRepoListSelectedIndex();

int getPlayListSelectedIndex();

void connectSignalsAndSlots();

private slots:
void listItemChanged();

void addMovie();
void deleteMovie();
void filterRepoMovies();
void moveMovieToPlaylist();
void playmovie();
void nextmovie();
};

我在这里称呼它:

Controller c(repo, p);
QTPlay w{c};

如果相关的话,我也在使用 Qt 的 Linux 版本。

这个问题不同,因为类型不是 int 而是定制的 Controller 并且使用了 Qt 框架。

【问题讨论】:

标签: c++ qt


【解决方案1】:

更改构造函数的参数名称或成员变量的名称,使它们不相同(可能通过将_ 附加到其中之一。可能就是你正在做的是合法的,也可能不合法 - 但它显然会让编译器感到困惑。(如果我在代码审查中看到它,我必须停下来检查标准,看看它是否合法。)

【讨论】:

  • 我没有投反对票。但是拥有一个与字段同名的构造函数参数是完全合法的(并且在某些圈子中是常见的做法)。如果编译器被它弄糊涂了,那么编译器就坏了。成员及其初始化程序的名称查找规则不同,并且在每种情况下都做正确的事情。
  • 我试过了,还是不行。我还不能投票,所以 IDK 关于否决票。
  • @AlanStokes: 我以为是这样,但是如果编译器坏了,OP 必须更改他的代码或他的编译器。我认为更改代码更容易 - 我可能应该编辑我的帖子以使其更清晰。
  • 嗯。什么编译器?如果您改为使用c(c) 进行初始化,它会起作用吗?您是否指定了 C++11 / C++14 标准?
  • 我使用 g++ -std=c++11 运行它,当使用 qt 的 makefile 运行程序时会发生这种情况(我确实强制它使用 std=c++11 运行)。它通过时像这样初始化,很难我有其他文件以这种方式初始化并且没有问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-09-08
  • 2020-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-26
  • 2012-01-07
相关资源
最近更新 更多