【问题标题】: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;
}

【问题讨论】:

标签: c++ class inheritance constructor


【解决方案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");

【讨论】:

    猜你喜欢
    • 2016-09-05
    • 2014-12-22
    • 2021-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-27
    相关资源
    最近更新 更多