3

私はC#のようなプロパティを書こうとしているので、これを得ました:

#include <iostream>

class Timer
{
public:
    static class {
    public:
        operator int(){ return x;}
    private:
        int x;
    }y;
};
int main()
{
    std::cout << Timer::y;
    std::cin.get();
}

そして最後に、このエラーが発生しました:

error LNK2001: unresolved external symbol 
"public: static class Timer::<unnamed-type-y>y> Timer::y"

誰かが理由を教えてくれたら幸いです。

だから、それはただの宣言です。それは残念です。別の場所で y を定義する以外の定義にするか、匿名型に名前を付けないと実行できない初期化する方法を取得できますか。

4

2 に答える 2

1

私が考えることができる最も簡単な解決策(ただし、名前のないクラスの名前が導入されます):

#include <iostream>

class Timer
{
private:
    class internal {
    public:
        operator int(){ return x;}
    private:
        int x;
    };

public:
    static internal y;
};

Timer::internal Timer::y;

int main()
{
    std::cout << Timer::y;
    std::cin.get();
}

また、C++ で「C# のような」ものを記述しようとしないでください。機能しません。staticそして、 C# との混合方法がわかりませんproperty

internal編集:クラスを としてマークすることもできるprivateため、クラス自体はクラスの外部からアクセスできません。更新されたコードを参照してください。

于 2012-04-15T17:26:01.700 に答える