簡體   English   中英

引用變量/指針和類成員的麻煩[C ++]

[英]Troubles with reference variables/pointers an class members [C++]

我一直在做一個項目並且有很多課程,其中一些是這樣的:

class A
{
    // stuff;
};

class B
{
    A& test;

public:
    B(A& _test) :
        test(_test)
    {};
    void doStuff();
};

class C
{
    A foo;
    B bar(foo);

    void exp()
    {
        bar.doStuff();
    }
};

當C :: foo不是類型名稱時,這最終會在C類中中斷。 在我的大項目中,所有內容都被分解為單獨的.cpp和.h文件,如果我在Bh中#include“Ch”,我沒有看到錯誤,但是C.cpp中仍然存在錯誤,其中bar是我的編譯器完全無法識別(Visual Studio 2013)。 即使A&是A *,也會出現錯誤(當然,在必要時更改代碼引用的代碼)。 有沒有人對這里發生的事情有任何提示?

這行代碼:

B bar(foo);

嘗試聲明一個名為bar的成員函數,它返回一個B並接受一個類型為foo的參數。 但是,在你的代碼中, foo不是一個類型 - 它是一個變量。 我猜你的意思是初始化bar

B bar{foo}; // non-static data member initializers must be done with {}S

或者只寫出構造函數:

C()
: bar(foo)
{ }

此外,此構造函數將您的參考test分配給臨時_test

B(A _test) :
    test(_test)
{ }

您想通過引用獲取_test

B(A& _test) : test(_test) { }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM