クラス内でString型のオブジェクトを宣言したいのですが、
下記のようにするとエラーを出してしまいます。どうすれば良いでしょうか?
※ ソフトはVS2010を使用しています。
クラス内でのString型オブジェクトの宣言
Re: クラス内でのString型オブジェクトの宣言
String型ではなく、C++の標準ライブラリのstd::string型でいいですか?はんなり さんが書きました:クラス内でString型のオブジェクトを宣言したいのですが、
下記のようにするとエラーを出してしまいます。
適切にコードを補えばいいと思います。はんなり さんが書きました:どうすれば良いでしょうか?
#include <cstdio> // printfを利用するために追加
#include <string> // std::stringを利用するために追加
class a{
void f(){
printf("%f",k); // %fの前後に"を追加
}
protected:
double k;
std::string s;//←ここがエラー
};
int main(){} // リンクエラーを防ぐために追加(コンパイルだけなら必要ない)
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: クラス内でのString型オブジェクトの宣言
ちゃんとString型のオブジェクトを宣言してみました。
ついでに不要な#includeを消しました。
Wandboxで確認
ついでに不要な#includeを消しました。
// 不正なコードを消してコンパイルを通す
#define printf(a,b)
// String型が定義されていないので、適当に作成
class String {
};
class a{
void f(){
printf(%f,k);
}
protected:
double k;
// 型名を修正
String s;//←ここがエラー
};
int main(){} // リンクエラーを防ぐために追加(コンパイルだけなら必要ない)
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: クラス内でのString型オブジェクトの宣言
もしくは、VS2010を使うのをやめて、素直にJavaで書けばいいです。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: クラス内でのString型オブジェクトの宣言
回答ありがとうございます。
あまり良くわからなかったのですが、ヘッダーにクラスを宣言していたのが原因のようでした。
.cpp内に移動したら問題なく動作しました。
ちなみにエラーは、
"error C2039: 'string' : 'std' のメンバーではありません。"
というものでした。
ありがとうございました。
あまり良くわからなかったのですが、ヘッダーにクラスを宣言していたのが原因のようでした。
.cpp内に移動したら問題なく動作しました。
ちなみにエラーは、
"error C2039: 'string' : 'std' のメンバーではありません。"
というものでした。
ありがとうございました。
Re: クラス内でのString型オブジェクトの宣言
おそらくヘッダーで#include <string>を最初にインクルードしてないからじゃないですかね?はんなり さんが書きました:回答ありがとうございます。
あまり良くわからなかったのですが、ヘッダーにクラスを宣言していたのが原因のようでした。
.cpp内に移動したら問題なく動作しました。
ちなみにエラーは、
"error C2039: 'string' : 'std' のメンバーではありません。"
というものでした。
ありがとうございました。
Re: クラス内でのString型オブジェクトの宣言
そういえばヘッダーにはインクルードしてませんでした。
おかげで原因が分かりました。ありがとうございます!
おかげで原因が分かりました。ありがとうございます!