无效使用 class::constructor 不确定问题是啥。但是,当使用 set 方法时没有问题[重复]
Posted
技术标签:
【中文标题】无效使用 class::constructor 不确定问题是啥。但是,当使用 set 方法时没有问题[重复]【英文标题】:invalid use of class::constroctor not sure what the problem is. However when using set method there's no problem [duplicate]无效使用 class::constructor 不确定问题是什么。但是,当使用 set 方法时没有问题[重复] 【发布时间】:2021-02-08 23:03:51 【问题描述】:基类的构造函数
Business::Business(const string& nName,const string& nAddress) name
= nName; address = nAddress;
我试图从派生类中使用的构造函数
Restaurant::Restaurant(const float& nRating,const string& nName,const string& nAddress)
Business();
Business::setBusinessName(nName);
Business::setBusinessAddress(nAddress);
rating = nRating;
从 main 我正在尝试使用上述方法从 main 设置类的字段,该方法使用餐厅类的构造函数。我不断收到错误,无效使用 'Restaurant::Restaurant'
#include <iostream>
#include <string>
using namespace std;
#include "Restaurant.h"
int main()
Restaurant m;
m.Restaurant(2.55 , "s" , "224");
cout << m.getRating() <<endl<< m.getBusinessAddress() <<endl<< m.getBusinessName();
return 0;
【问题讨论】:
the Member Initializer List 的有用性与教授它的频率之比接近无穷大。 【参考方案1】:从派生类中放置基类构造是错误的。它应该是这样的:
Restaurant::Restaurant(const float& nRating,const string& nName,const string& nAddress)
: Business(nName, nAddress) // base construction
, rating(nRating) // member initialization
从表面上看,您对构造函数如何工作的整个理解同样是错误的。在main()
,这个:
Restaurant m;
m.Restaurant(2.55 , "s" , "224");
应该是:
Restaurant m(2.55 , "s" , "224");
【讨论】:
以上是关于无效使用 class::constructor 不确定问题是啥。但是,当使用 set 方法时没有问题[重复]的主要内容,如果未能解决你的问题,请参考以下文章
解决关于:TypeError: Class constructor Model cannot be invoked without 'new'
Appium 1.9.1 启动报错 Fatal TypeError: Class constructor BaseDriver cannot be invoked without 'new
lit element: Class constructor h cannot be invoked without 'new'
更新反应后出错:TypeError: Cannot call a class constructor without |new|