我發現這個代碼,我不明白,爲什麼它在項目中工作。代碼的結構爲:(被我加入內符號以創建更小的例子在源MYSTRUCT是一個指針。)用兩個參數調用新操作符,但沒有賦值
class MyClass {
int value;
};
struct MyStruct {
MyClass classA;
MyClass classB;
};
int main() {
MyStruct myStruct;
new (&((&myStruct)->classA)) MyClass();
new (&((&myStruct)->classB)) MyClass();
}
。
編譯器說
In function int main()
error: no matching function for call to ‘operator new(sizetype, MyClass*)’
new (&((&myStruct)->classA)) MyClass();
^
note: candidates are:
note: void* operator new(long unsigned int)
note: candidate expects 1 argument, 2 provided
也許我失去了一些重要的東西。這是一個大項目,我無法複製它。我無法創建MWE。我希望有人能向我解釋這個代碼背後的主要思想,以及我爲了編譯它而必須改變的內容。
查找[_placement'new'_(http://en.cppreference.com/w/cpp/memory/new/operator_new )。 – user0042
它在兩個MyClass變量中創建一個MyClass類的新實例結構MyStruct的實例myStruct包含 –
這個(&myStruct) - >'沒有任何意義。或者至少我希望它沒有。 – Quentin