我正在編寫一個用C++編寫家庭作業的程序。我有一個問題位從一個構造函數初始化值傳遞到另一個和它說:如何正確地將變量傳入和傳出非默認構造函數?
error C2664: 'Book::Book(std::string,Author *,Publisher *,double)' : cannot convert parameter 2 from 'Author' to 'Author *'
我有點在OOP生鏽和新的C++。
請張貼如果我應該包含更多的代碼我會附上從我不能做轉換的主類和類的代碼。該方案還沒有完成。
Main.cpp的
#include <iostream>
using namespace std;
#include "Book.h"
void main()
{
cout << "Book 1" << endl;
Author *pAuthor = new Author("John", "Doe");
Publisher *pPublisher = new Publisher("Wrox", "10475 Crosspoint Blvd.", "Indianapolis");
Book *book = new Book("Memory Management", *pAuthor, *pPublisher, 49.99);
cout << "Book 2" << endl;
int i;
cin >> i;
};
一幾點:你根本不應該使用'new',並且因爲這個簡單的程序,你已經有了內存泄漏。取一個臨時地址是非法的&(ostringstream()<< number)'並且不應該編譯。另外,'string(title)'是多餘的,它可以只是'title'。另外'void main'是非法的,它應該是'int main',你不必從它返回任何東西,它會自動返回'0'(儘管_no其他函數將會這樣做,main是一個特例)。 –