无效使用 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 方法时没有问题[重复]的主要内容,如果未能解决你的问题,请参考以下文章

scala基础 --class constructor

注解的定义和使用

解决关于: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|