【问题标题】:C++ Constructor InitilizerC++ 构造函数初始化器
【发布时间】:2018-06-30 00:02:17
【问题描述】:

我正在尝试对名称和时间使用构造函数初始化程序,但是 Visual Studio 给了我错误,我没有看到任何问题,对我来说似乎很好,我试图看到问题,我尝试了其他的事情好吧,请帮忙。提前谢谢你。

非常感谢任何帮助,我添加了所有头文件和 Entry 类的实现,我知道似乎,我添加了以便您可以看到它。

// Entry.h
#pragma once
#include <iostream>
#include <string>
#include "RelationType.h"

using namespace std;

class Name 
{
    public:
    Name();

    Name(string firstName, string middleName, string lastName);

    string GetFristName() const;

    string GetLastName() const;

    string GetMiddleName() const;

    char GetMiddleInitial() const;

    RelationType ComparedTo(Name otherName) const;

    private:
    string first;
    string last;
    string middle;
};

//Entry.cpp
#include "Entry.h"
#include<iostream>
#include <string>

using namespace std;

Entry::Entry() {}

Entry::Entry(string firstName, string middleName, string lastName,
        int initHours, int initMinutes, int initSeconds)  
        : name{ (firstName, middleName, lastName) ,      //name is where its mad at
          time(initHours, initMinutes, initSeconds) } {}

string Entry::GetNameStr () const
{
     return (name.GetFirstName() + ' ' + name.GetLastName());
}

string Entry::GetTimeStr () const
{
     return (name.FirstName() + ' ' + name.LastName());
}


// Name.h
#pragma once
#include <iostream>
#include <string>
#include "RelationType.h"

using namespace std;

class Name
{
    public:
    Name();

    Name(string firstName, string middleName, string lastName);

    string GetFristName() const;

    string GetLastName() const;

    string GetMiddleName() const;

    char GetMiddleInitial() const;

    RelationType ComparedTo(Name otherName) const;

    private:
    string first;
    string last;
    string middle;
};

// RealtionType.h

#pragma once
#ifndef RELATION
#define RELATION

enum RelationType { BEFORE, SAME, AFTER };

#endif

// TimeOfDay.h
#pragma once

class TimeOfDay
{

    public:

    //Intentionally missed const, see what happened without const
    TimeOfDay();                                 // zero timepfday object

    TimeOfDay(int hours, int minutes, int seconds); //takes 3 parameters

    TimeOfDay Increment() const;                //increment by 1 sec

    void Write() const;                         //write the timeofday obj to print

    bool Equal(TimeOfDay otherTime) const;     //true if timeofday obj equals othertime

    bool LessThan(TimeOfDay otherTime) const;  //const, true if the timeofday obj is
                                           //before itherTime
    private:

    int hours;
    int minutes;
    int seconds;
};

【问题讨论】:

  • 错误说明了什么?
  • name{ (firstName, middleName, lastName), time(initHours, initMinutes, initSeconds) }。这是不对的。
  • name 变量的数据类型是什么
  • Name的数据类型是Name,来自Entry类Name nmae;错误是“名称”不是非静态数据成员或类的基类
  • 我不明白错误,这本身就是一个问题。

标签: c++ class initializer


【解决方案1】:

您的 Entry 类构造函数代码应如下所示

Entry::Entry(string firstName, string middleName, string lastName,
            int initHours, int initMinutes, int initSeconds)  
            : name(firstName, middleName, lastName)
            , time(initHours, initMinutes, initSeconds) {}

【讨论】:

    猜你喜欢
    • 2011-01-25
    • 2013-11-17
    • 2021-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-02
    相关资源
    最近更新 更多