我知道这个问题以前有人问过,但请哼我一声。我很难掌握如何初始化一个类。
这是有问题的代码。
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
//------------------------------------------------------------------- ---------------------------
class Date //Class Date
{
public:
int day;
int month;
int year;
Date();
Date(int,int,int);
~Date(void);
};
Date::Date(void)
{
day = 0;
month = 0;
year = 0;
}
Date::Date(int month, int day, int year)
{
day = day;
month = month;
year = year;
} //Class Date
//---------------------------------------------------------------------------------------------
//Class Book
class Book
{
public:
string _title;
string _author;
Date _published;
string _publisher;
float _price;
string _isbn;
int _page;
int _copies;
Book();
Book(string,string,Date,string,float,string,int,int);
~Book(void);
};
Book::Book(void)
{
_title = "";
_author = "";
//_published;
_publisher = "";
_price = 0;
_isbn = "";
_page = 0;
_copies = 0;
}
Book::Book(string title, string author, Date published, string publisher, float price, string isbn, int page, int copies)
{
_title = title;
_author = author;
_published = published;
_publisher = publisher;
_price = price;
_isbn = isbn;
_page = page;
_copies = copies;
} //Class Book
//---------------------------------------------------------------------------------------------
class Node //Class Node
{
friend class LinkedList;
private:
Book *_book;
Node *_next;
public:
Node(void);
Node(Book*);
Node(Book*,Node*);
~Node(void);
};
Node::Node(void)
{
_book = NULL;
_next = NULL;
}
Node::Node(Book *book)
{
_book = book;
_next = NULL;
}
Node::Node(Book *book, Node *next)
{
_book = book;
_next = next;
} //Class Node
//---------------------------------------------------------------------------------------------
class LinkedList //Class LinkedList
{
private:
Node *_head;
Node *_tail;
public:
LinkedList(void);
LinkedList(Book*);
~LinkedList(void);
void insert_front(Book*);
void insert_rear(Book*);
void print_list(void);
};
LinkedList::LinkedList(void)
{
_head = NULL;
_tail = NULL;
}
LinkedList::LinkedList(Book *book)
{
_head = new Node(book);
_tail = _head;
} //Class LinkedList
//---------------------------------------------------------------------------------------------
void LinkedList::insert_front(Book *book)
{
if(_head == NULL)
{
_head = new Node(book);
_tail = _head;
}
else
_head = new Node(book, _head);
}
void LinkedList::insert_rear(Book *book)
{
if(_head == NULL)
{
_head = new Node(book);
_tail = _head;
}
else
{
_tail -> _next = new Node(book);
_tail = _tail -> _next;
}
}
void LinkedList::print_list(void)
{
Node *temp = _head;
while(temp!= NULL)
{
cout << temp -> _book -> _title << endl;
cout << temp -> _book -> _author << endl;
cout << temp -> _book -> _publisher << endl;
temp = temp -> _next;
cout << endl;
}
}
LinkedList::~LinkedList(void)
{
}
//---------------------------------------------------------------------------------------------
//Main
int main(void)
{
LinkedList myList;
ifstream myFile("input.txt");
string title;
string author;
Date published; // was "Date published(int,int,int);"
string publisher;
float price;
string isbn;
int page;
int copies;
while(myFile)
{
getline(myFile,title);
getline(myFile,author);
//getline(myFile,published);
getline(myFile,publisher);
//getline(myFile,price);
getline(myFile,isbn);
//getline(myFile,page);
//getline(myFile,copies);
myList.insert_front(new Book(title,author,published,publisher,price,isbn,page,copies));
}
myList.print_list();
return 0;
}
我感兴趣的错误是:
assignment3.cpp:213:33: error: no matching constructor for initialization of 'Book' ...Book(title,author,published,publisher,price,isbn,page,copies)); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ assignment3.cpp:67:7: note: candidate constructor not viable: no known conversion from 'Date (int, int, int)' to 'Date' for 3rd argument Book::Book(string title, string author, Date published, string publis... ^ assignment3.cpp:38:7: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 8 were provided class Book ^ assignment3.cpp:54:7: note: candidate constructor not viable: requires 0 arguments, but 8 were provided Book::Book(void) ^ 1 error generated.
我做了建议的更改,现在我得到一个不同的错误:
Undefined symbols for architecture x86_64: "Date::~Date()", referenced from: Book::Book() in assignment3-0f3b1c.o Book::Book(std::__1::basic_string, std::__1::allocator >, std::__1::basic_string, std::__1::allocator >, Date, std::__1::basic_string, std::__1::allocator >, float, std::__1::basic_string, std::__1::allocator >, int, int) in assignment3-0f3b1c.o _main in assignment3-0f3b1c.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)
以下是函数声明(published
,取3int
s,返回Date
):
Date published(int,int,int)
您想创建一个变量:
Date published;
或者,如果您想明确表示您关心零初始化:
Date published{};
我只是想习惯基本的复制构造函数。 我假设我正确地放置了复制构造函数。 但是当我试图编译时,我不断地得到错误“没有匹配的构造函数来初始化B” 我有点困惑。
问题内容: import React, { Component } from ‘react’; 通常我看到的是,如果他使用es6类,人们会在构造函数中执行this.state。如果不是,他可能会使用getinitialstatestate函数放置状态。但是上面的代码(是的,这是一个有效的代码),两者都没有使用。我有2个问题,这里的状态是什么?那是局部变量吗?如果是,为什么没有?prevState来
问题内容: 在Java中,但是在其他OO语言中,初始化属性定义之间也有区别,例如 并使用构造函数对其进行初始化? 我想不出任何实际的区别,有没有?否则,即使结果相同,是否存在一种方法优于另一种方法的情况? 问题答案: 初始化顺序在这里很重要。 将字段设置为默认初始值(0,false,null) 调用对象的构造函数(但不要执行构造函数的主体) 调用超类的构造函数 使用初始化程序和初始化块初始化字段
当旋转手机或更改为深色模式(当我的活动重新创建时)时,用户将面临无法找到片段构造函数等问题。 无法启动活动组件信息{e.Quran.Qaz/e.Quran.Qaz.ui.Zhuz.QuranByPage}:androidx。碎片应用程序。片段$InstantiationException:无法实例化片段e.Quran。Qaz。用户界面。朱。PageFragment:找不到片段构造函数 在我的项目中
问题内容: 我有两个班,第一个是我的主班,第二个是我的编辑框架班。 我的第二个类(UpdateGUI)在其构造函数中提供oldName,并对其进行编辑,当我单击时,它将newName发送给我的第一个类。 我的第二堂课: 我的问题是,为什么newName为null? 更新: UpdateGUIDialog类: 输出: 我需要打印而不是null。 问题答案: Java对象有点像真实对象。并顾名思义:它
主要内容:初始化 const 成员变量构造函数的一项重要功能是对成员变量进行初始化,为了达到这个目的,可以在构造函数的函数体中对成员变量一一赋值,还可以采用 初始化列表。 C++构造函数的初始化列表使得代码更加简洁,请看下面的例子: 运行结果: 小明的年龄是15,成绩是92.5 李华的年龄是16,成绩是96 如本例所示,定义构造函数时并没有在函数体中对成员变量一一赋值,其函数体为空(当然也可以有其他语句),而是在函数首部与函数体之间添