我覺得這應該是簡單的,但無論出於什麼原因我都無法使它工作。從'Class *'沒有可行的轉換到'Class'C++
我試圖創建一個類的實例,可以傳入並由其他函數直接編輯。
例如:
main()
{
ClassFoo foo = new ClassFoo();
someFunction(foo);
}
void someFunction(ClassFoo& f)
{
f.add("bar");
}
問題是,編譯時,我結束了這個錯誤。
no viable conversion from 'ClassFoo *' to 'ClassFoo'
ClassFoo foo = new ClassFoo();
^ ~~~~~~~~~~~~~~~
它還說,其他候選構造是不可行的,但是在我的ClassFoo
類我有一個構造函數,看起來像這樣:
ClassFoo::ClassFoo()
{}
所以,我怎麼就能夠完成編輯ClassFoo
函數變量?
當您需要在現代C++中使用'new'時,唯一的時候是爲智能指針指定自定義刪除器。 +1 – vsoftco 2015-03-19 02:45:23
謝謝你。任何想法爲什麼當退出程序(只在主要返回0)時,它說'被釋放的指針沒有被分配'? – Alex 2015-03-19 03:08:03
@Alex這意味着某個地方有一個'delete'調用,它試圖刪除那些未用'new'分配的東西。參見:http://stackoverflow.com/questions/22824802/malloc-error-for-object-pointer-being-freed-was-not-allocated-set-a-br。但是,除非你真的知道你需要它,否則「新」不應該出現,也不應該「刪除」。 – aruisdante 2015-03-19 03:15:30