私は、クラスの静的変数の説明を得ることができたと思っていました。C++静的変数と未解決の外部エラー
例: 私は完全に異なる機能、アルファとベータを実行する2つの異なるクラスを持っています。
//alpha.h
#pragma once
#include <iostream>
#include "beta.h"
class alpha{
public:
alpha(){
}
static beta var;
void func(){
var.setX(3);
}
void output(){
}
};
//beta.h
#pragma once
#include <iostream>
using namespace std;
class beta{
public:
int x;
char y;
beta(){
x = 0;
y = ' ';
}
void setX(int _X){
x = _X;
}
};
//main.cpp
#include <iostream>
#include <iomanip>
#include "alpha.h"
using namespace std;
int main(){
alpha x, y, z;
x.func();
}
今、私はこれをコンパイルしようとすると、私は未解決の外部エラーを取得:
error LNK2001: unresolved external symbol "public: static class beta alpha::var" ([email protected]@@[email protected]@A)
私はないんだけど、それは次のようになりますので、アルファの中で、私はタイプベータの静的変数を宣言します何を変えるべきか、この作品のようなものを作るために何を追加する必要があるのかを確かめてください。私はx、y、zが本質的に同じベータ変数を共有したいと思っています。私は、それぞれにベータ変数を参照するだけでこの同じことを達成できると思います。クラスの静的メンバーがクラスのどのインスタンスでも同じ値を持つため、ここでstaticキーワードを使用して同じことを実行できるかどうかを知りたいと思います。その定義が間違っていない限り。
これは愚かな質問のように思える場合はごめんなさい。これはグローバル変数を使用すると考えられますか? – Cuthbert
いいえ(愚かでもグローバルでもない)。このリンクをご覧くださいhttp://www.parashift.com/c++-faq-lite/ctors.html#faq-10.12 –