-1

C++ のクラスを作成しようとすると、問題が発生します。これは私のヘッダー file.h です:

#include <iostream>
#include <string>
#ifndef MESSAGES__H__
#define MESSAGES__H__

class Message
{
    public:
        Message(std::string recipient, std::string sender);
        void append(std::string text);
        std::string to_string() const;
        void print() const;
    private:
        std::string recipient;
        std::string sender;
        std::string message;
        std::string text_input;
        char* timestamp;
};

#endif

メイン メソッドを実行すると、getline(cin,) からエラー メッセージが表示されます。

int main()
{
    vector <Message*> message_list;
    Message* message1 = new Message("Student1", "Gabriel");
    cout << "Enter message text line, enter . on new line to finish: " << endl;
    while(getline(cin, text_input))
    {
    }
}

getline メソッドは、オーバーロードされた関数のインスタンスを提供していません。また、同じ行から、text_input は識別子が未定義であることを示しています。私はすでに.hクラスで宣言したと思いましたか?

前もって感謝します。

更新部分

これで、すべてのエラーが修正されました。

vector <Message*> message_list;
Message* message1 = new Message("Saiful", "Gabriel");
cout << "Enter message text line, enter . on new line to finish: " << endl;
while(getline(cin, message1->get_text_input()))
{
    if(message1->get_text_input() == ("."))
    {
        break;
    }
    else
    {
        message1->append(message1->get_text_input());
    }
}

while ループ内で、一度 "." 改行の先頭で検出された場合、おそらく停止します。しかし、何度入力しても「。」新しい行では、プロンプトが表示され続けます。理由を知っている人はいますか?

4

3 に答える 3

0

「text_input は識別子が未定義であることを示しています」を修正するには

変更する必要があります

 while(getline(cin, text_input))

 while(getline(cin, message1->text_input))

これにより、最初のエラーが修正される可能性があります。

于 2013-06-28T10:07:40.127 に答える