我的Foo的一個結構:傳遞一個const指針...我需要這樣做嗎?
struct Foo
{
};
我有酒吧的一個結構:
struct Bar
{
};
它們由2層結構,其保持(添加/刪除),每個的一個指針數組處理:
struct FooContainer
{
Foo** FooList;
// add(), remove() etc
};
struct BarContainer
{
Bar** BarList;
// add(), remove() etc
};
現在,我要的是叫巴茲另一個結構可鏈接(在一到多的方式)向美孚巴茲。我不能(因爲這裏沒有解釋的原因)通過索引引用它們,它必須通過指針/引用。
事情是這樣的:
struct Baz
{
Foo* foo;
Bar* bar;
};
如果我想添加一個構造函數來巴茲歷時這些非const指針,我會怎麼做呢?
Baz應該允許我改變它指向的Foo和Bar的哪個實例......所以它的指針不想是const。
我是否將指針作爲const傳遞給構造函數,然後對它們做些什麼,因爲如果我傳遞對struct的引用?然後,我試圖設置一個非const指針的值爲const指針的問題。
我希望這個問題是有道理的......
編輯:我應該使用引用,而不是指針?
這就是我的想法。爲什麼當你傳遞一個struct的引用時,你會將它作爲一個const引用傳遞給它? – Beakie 2014-10-30 17:07:05
@Beakie如果你想改變你的'struct',你不必將它作爲'const'引用傳遞。當你不想改變它的時候,你把'const'放在調用你的函數時給調用者一個很大的靈活性,因爲通過'const'引用'struct'可以讓調用者通過一個臨時的。例如,如果你有'void foo(const Baz&b)',你可以這樣調用它:'foo(Baz(p1,p2))'。在這裏,'Baz'是一個臨時對象,但它可以,因爲'foo'通過'const'引用獲取'Baz'。沒有'const'這個相同的調用就不會編譯。 – dasblinkenlight 2014-10-30 17:10:45