プロが教える店舗&オフィスのセキュリティ対策術

//test.cpp
#include<iostream>
#include<string>

class test {

string hoge;

public:
test(string str);
void method() const;
}

14行目  test::test(string str) : test(hoge){}

void test::method() const {
std::cout << "test" << std::endl;
}

int main() {

string s;
std::cout << "名前を入力してください。" << std::endl;
std::cin >> s;
test aaa(s);
aaa.method();
}

コンパイルしようとすると下記エラーになります。

エラー E2303 test.cpp 7: 型名が必要
エラー E2139 test.cpp 7: 宣言に ; がない
エラー E2293 test.cpp 10: ) が必要
エラー E2147 test.cpp 14: 引数宣言は 'string' で始められない
エラー E2111 test.cpp 14: ここでは型 'test' は定義できない
エラー E2136 test.cpp 14: コンストラクタには戻り型は指定できない
エラー E2316 test.cpp 14: 'test::test(int)' は 'test' のメンバーではない
エラー E2451 test.cpp 22: 未定義のシンボル string(関数 main() )
エラー E2379 test.cpp 22: ステートメントにセミコロン(;)がない(関数 main() )
エラー E2451 test.cpp 24: 未定義のシンボル s(関数 main() )
*** 10 errors in Compile ***

■1.型名が必要
→string hoge;と宣言してる箇所でエラー発生。
…stringと宣言してるのになぜでしょうか…
■2.宣言に";"がない
→string hoge;と宣言してる箇所でエラー発生。
…";"つけてるのですが…
■3.")"が必要
→test(string str);の行でエラー発生。
…")"はどこで必要なのでしょうか
■4.引数宣言はstringでははじめられない
→test::test(string str) : test(hoge){}の行でエラー発生。
…C++って引数をstringで受け取れない…?どういうことでしょうか

などなど疑問がいっぱいあるのですが、どこが間違っているのかよくわかりません…ご指導よろしくお願いします。

A 回答 (2件)

//bcc32で一応コンパイル通った


//test.cpp
//test.cpp
#include<iostream>
#include<string>

class test{

private:
std::string hoge;



public:

test(std::string& str) {
hoge = str;
}

void method() const{
std::cout << hoge << std::endl;
std::cout << "methodメソッドが呼び出されました" << std::endl;

}

};

void main(){

std::string s;
std::cout << "名前を入力してください。" << std::endl;
std::cin >> s;
test aaa(s);
aaa.method();

}
    • good
    • 0
この回答へのお礼

具体的なソースを提示していただいてとても助かりました。
ありがとうございました。

お礼日時:2007/07/08 03:11

C++のstringは、正しくはstd::stringと書きます。


std::というのは、標準の名前空間のことで端的に言えば「標準の」を意味します。
# 一部の古いコンパイラはstd::がいらないものもあります。
# また、using namespaceというstd::を明記しなくてもいい記法があり、
# 入門書ではお手軽に使っていることがありますが、
# 基本的はヘッダでは使わない方が良い方法なので、std::と書いた方が安全です。
    • good
    • 0
この回答へのお礼

とてもわかりやすい解説ありがとうございました。
訂正してコンパイルするとうまくいきました。
また何か機会がありましたらご指導宜しくお願いします。

お礼日時:2007/07/08 03:12

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!