1

私のヘッダーファイル:

// 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 倍にチェックしています。助けてくれてありがとう(そして辛抱強く待ってくれました)、本当に感謝しています。

4

1 に答える 1

0
string getCustomerName; // member function missing () in class SunshineWeb definition.

string getCustomerName(); // function to retrieve customer name
于 2012-04-10T03:32:01.697 に答える