私のヘッダーファイル:
// Definition of class SunshineWeb that counts Product 1, Product 2
// and Product 3 retail prices. Refer to Project 2.cpp for member
// functions.
using namespace std;
#include <string> // program uses C++ standard string class
// SunshineWeb class definition
class SunshineWeb
{
public:
SunshineWeb( string ); // constructor initialises customer name
void setCustomerName( string ); // function to get customer name
string getCustomerName; // function to retrieve customer name
void displayMessage(); // displays a welcome message
void inputProducts(); // inputs a number of products
void displayProductTotal(); // total number of what products
private:
string CustomerName; // customer's name
int Product1Count;
int Product2Count;
int Product3Count;
}; // end of class SunshineWeb
メンバー関数の定義、スイッチ カウンターなど:
// Project 2.cpp : Defines the entry point for the console application.
// Member-function definitions for class SunshineWeb that uses a switch
// statement to count Products, then calculate and display Product total.
#include "stdafx.h"
#include <iostream>
#include "SunshineWeb.h"
#include <iomanip>
using namespace std;
//constructor initialises CustomerName with string supplied as arguement;
//initialises counter data member to 0
SunshineWeb::SunshineWeb( string name )
{
setCustomerName( name ); // validates and store CustomerName
Product1Count = 0; // initialises count of Product 1 to 0
Product2Count = 0; // initialises count of Product 2 to 0
Product3Count = 0; // initialises count of Product 3 to 0
} // end SunshineWeb constructor
// function to set the customer's name; limits to 25 or fewer characters
void SunshineWeb::setCustomerName( string name )
{
if ( name.length() <= 25 ) // if the name has 25 or fewer characters
CustomerName = name;
else // if name is longer than 25 characters
{ // sets CustomerName to the first 25 characters of parameter name
CustomerName = name.substr( 0, 25 ); // selects first 25 characters
cout << "Name \"" << name << "\" exceeds maximum length (25). \n"
<< "Limiting CustomerName to first 25 characters.\n" << endl;
} // end if... else statement
} // end function setCustomerName
// function to retrieve customer's name
string SunshineWeb::getCustomerName()
{
return CustomerName;
}
// displays a welcome message to the user
void SunshineWeb::displayMessage()
{
cout << "Welcome to Sunshine Web's store application!" << endl;
} // end function displayMessage
void SunshineWeb::inputProducts()
{
int products; // products entered by user
cout << "Enter 1 for Product 1, 2 for Product 2, " << endl
<< "3 for Product 3, and EOF character to end input." << endl;
// loops until user inputs end-of-file key sequence
while( ( products = cin.get() ) != EOF )
{
// determine which product was entered
switch (products) // switch statement nested in while
{
case '1': // The character 1 was inputted
++Product1Count; // increment Product1Count
break; // necessary to exit the switch
case '2': // The character 2 was inputted
++Product2Count; // increment Product2Count
break; // necessary to exit the switch
case '3': // The character 3 was inputted
++Product3Count; // increment Product3Count
break; // necessary to exit the switch
case '\n': // ignores new lines,
case '\t': // tabs,
case ' ' : // and spaces inbetween input
break; // exit switch
default: // catch all other characters
cout << "Incorrect character entered."
<< "Please enter 1, 2, 3 or EOF key." << endl;
break; // exit switch
} // end switch
} // end while
} // end function inputProducts
// displays the quantity of the product and retail total
void SunshineWeb::displayProductTotal()
{
// output summary of user orders
cout << "Quantity of each Product ordererd by the user:"
<< "\nProduct 1, at $22.98 per unit: " << Product1Count // displays number of Product 1
<< "\nProduct 2, at $34.50 per unit: " << Product2Count // displays number of Product 2
<< "\nProduct 3, at $99.98 per unit: " << Product3Count // displays number of Product 3
<< endl;
// algorithim used to calculate total price
int total = static_cast <double> (Product1Count*22.98) + static_cast <double>(Product2Count*34.50) + static_cast<double>(Product3Count*99.98);
cout << "The total price of your order is: " << fixed << setprecision(2) << total << endl;
} // end function displayProductTotal
問題は から始まり、string SunshineWeb::getCustomerName()
下線が引かれgetCustomerName()
、次のように述べられています。
Error:declaration is incompatible with "std::string SunshineWeb::getCustomerName"
(declared at line 12 of "c:\users\user\documents\visual studio 2010\projects\project 2\project 2\SunshineWeb.h")
そして、これはメインファイル/エグゼキュータのものです:
// creates SunshineWeb object, inputs products and displays
// total quantity and retail price of products inputted.
#include "SunshineWeb.h" // includes definition of class SunshineWeb
int main()
{
// creates SunshineWeb object
SunshineWeb mySunshineWeb("Sunshine Web Store");
mySunshineWeb.displayMessage();
mySunshineWeb.inputProducts();
mySunshineWeb.displayProductTotal();
} // end main
私の2番目の問題はSunshineWeb mySunshineWeb("Sunshine Web Store");
、下線が引かSunshine Web Store
れ、次のように述べられていることです。
Error: no suitable constructor exists to convert from "const char[19]" to "SunshineWeb"
C++ オブジェクト指向プログラミングを学び始めたばかりで、これはクラス用に書いたプログラムです。私はググって自分のメモを調べましたが、この問題はまったく役に立ちません/解決しません。私を最も悩ませているのは、適切なコンストラクター部分がないことです。顧客名に関連するすべての関数をウィンドウから単純にスローできます。まだ実装していないため、動作させることができないためです。しかし、多分私が見逃しているものがあります。いずれにせよ...助けが必要です! 私の赤ちゃんを救ってください!
編集:助けてくれてありがとう、私は自分のエラーに気づき、提案されたように微調整しようとしたので、ヘッダーファイルは次のようになりました:
// Definition of class SunshineWeb that counts Product 1, Product 2
// and Product 3 retail prices. Refer to Project 2.cpp for member
// functions.
#include <string> // program uses C++ standard string class
// SunshineWeb class definition
class SunshineWeb
{
public:
SunshineWeb( std::string ); // constructor initialises customer name
void setCustomerName( std::string ); // function to get customer name
std::string getCustomerName(); // function to retrieve customer name
void displayMessage(); // displays a welcome message
void inputProducts(); // inputs a number of products
void displayProductTotal(); // total number of what products
private:
std::string CustomerName; // customer's name
int Product1Count;
int Product2Count;
int Product3Count;
}; // end of class SunshineWeb
これにより、以前の互換性のない宣言エラー (単純なタイプミス) が修正されました。適切なコンストラクターがないエラーが修正されたかどうかはわかりません。厄介な赤い下線が消えている間、まだプログラムを実行できないためです。 Visual Studio 2010 からエラー リストを開くと、いくつかのエラーが表示されます。
Error 5 error C2065: 'mySunshineWeb' : undeclared identifier c:\users\user\documents\visual studio 2010\projects\project 2\project 2\sunshineweb.cpp 9
Error 7 error C2065: 'mySunshineWeb' : undeclared identifier c:\users\user\documents\visual studio 2010\projects\project 2\project 2\sunshineweb.cpp 10
Error 9 error C2065: 'mySunshineWeb' : undeclared identifier c:\users\user\documents\visual studio 2010\projects\project 2\project 2\sunshineweb.cpp 11
Error 2 error C2065: 'SunshineWeb' : undeclared identifier c:\users\user\documents\visual studio 2010\projects\project 2\project 2\sunshineweb.cpp 8
Error 3 error C2146: syntax error : missing ';' before identifier 'mySunshineWeb' c:\users\user\documents\visual studio 2010\projects\project 2\project 2\sunshineweb.cpp 8
Error 6 error C2228: left of '.displayMessage' must have class/struct/union c:\users\user\documents\visual studio 2010\projects\project 2\project 2\sunshineweb.cpp 9
Error 10 error C2228: left of '.displayProductTotal' must have class/struct/union c:\users\user\documents\visual studio 2010\projects\project 2\project 2\sunshineweb.cpp 11
Error 8 error C2228: left of '.inputProducts' must have class/struct/union c:\users\user\documents\visual studio 2010\projects\project 2\project 2\sunshineweb.cpp 10
Error 4 error C3861: 'mySunshineWeb': identifier not found c:\users\user\documents\visual studio 2010\projects\project 2\project 2\sunshineweb.cpp 8
Warning 1 warning C4627: '#include "SunshineWeb.h"': skipped when looking for precompiled header use c:\users\user\documents\visual studio 2010\projects\project 2\project 2\sunshineweb.cpp 3
はい、私は完全なアマチュアであり、(ほとんどの場合) ばかげた間違いを犯していますが、私の人生の愛のために、一見単純な問題の解決策を見つけることができないようです. これらの問題はまったく意味がありません。私はすべてを 4 倍にチェックしています。助けてくれてありがとう(そして辛抱強く待ってくれました)、本当に感謝しています。