2時間ぐらい理由不明で詰んでた時の対処法を載せるだけの備忘録
定義してあるはずのものが未定義とエラーが出る
例
class hoge{
int a;
public:
void fuge(){
a = 5; //aは未定義
}
}
解決策
・VSの再起動
・ビルドではなくリビルドをする
これで治らなければほかのを試す
静的アサーションに失敗 and 関係なさそうなエラーいっぱい
a.h
#include "b.h"
class a{
b* pb;
/*省略*/
}
b.h
#include "a.h"
class b{
a* pa;
/*省略*/
}
解決策
ヘッダー同士でincludeしあっているのが原因なので、片方includeを外してクラスの宣言だけ書いておく。
a.h
#include "b.h"
class a{
b* pb;
/*省略*/
}
b.h
class a;
class b{
a* pa;
/*省略*/
}
そもそも設計がよくない可能性もあるけどここでは触れないです
オブジェクトにメンバ関数と互換性のない型修飾子があります
class abc {
int a;
void fuga() {
//なんか
}
void hoge() const {
fuga();
a = 0;
}
}
##解決策
hoge
はconst
なので関数内で、const
ではない関数呼び出しや変数の変更は不可
std::vector::at
とかのconst
ありなしでオーバーロードされてる関数は、const
ありしか呼べない。push_back
などはそもそもintelisenseにも表示されないのでそこで頑張って気づけ自分。
class abc{
int a;
void fuga() {
//なんか
}
void hoge() {
fuga();
a = 0;
}
}
最後に
思い出したり、出くわしたら追記する
正しい言葉ではなかったりするかもしれませんが自分がわかればおkなのです。
間違ってたりしたら教えてください。