5 回答

TA貢獻1825條經驗 獲得超4個贊
必須先創建一個bookmanger副本,然后用
bookmanger bm;
bm.add()
或者
bookmanger *bm = new bookmanger();
bookmanger->add()調用。
注:這個要看類的名稱的,調用時就像結構體一樣,先用類引申一個對象就像Pid pid ; 調用時用對象名稱,函數名就行了。
擴展資料:
如果想調用重載的C++函數,則須封裝單獨的接口共C調用。
// C++ Code
void foo( int x );
void foo( float x );
extern "C" void foo_i( int x )
foo( x );
extern "C" void foo_f( float x )
foo( x );
則C中可這樣調用
// C Code
void foo_i( int x );
void foo_f( float x );
void ccc( int x1, float x2 )
foo_i( x1 );
foo_f( x2 );
// ...

TA貢獻1850條經驗 獲得超11個贊
void *p;它定義的不是指向void函數的指針,而是無類型指針
在C語言中規定,一個函數總是占用一段連續的內存區, 而函數名就是該函數所占內存區的首地址。 我們可以把函數的這個首地址(或稱入口地址)賦予一個指針變量, 使該指針變量指向該函數。然后通過指針變量就可以找到并調用這個函數。 我們把這種指向函數的指針變量稱為“函數指針變量”。
函數指針變量定義的一般形式為:
類型說明符 (*指針變量名)();
其中“類型說明符”表示被指函數的返回值的類型。“(* 指針變量名)”表示“*”后面的變量是定義的指針變量。 最后的空括號表示指針變量所指的是一個函數。
所以你要改成
#include <iostream>
using namespace std;
void *v;
void *hello(){
cout << "hello world!" << endl;
return v;
}
void main(){
void *( *p)();
p=hello;
p();//這里為什么樣不輸入hello world呀?
}
我很疑惑,hello函數為什么要返回一個全局無類型指針變量
其實則樣就可以
#include <iostream>
using namespace std;
void hello(){
cout << "hello world!" << endl;
}
int main(){
hello();
return 0;
}
不過如果你用的是Dev-c++就不行,它不支持void類型函數

TA貢獻1804條經驗 獲得超2個贊
#include <iostream>
using namespace std;
void *hello(){
cout << "hello world!" << endl;
return 0;
}
int main(){
hello();
return 0;
}
hello這個函數可以直接輸入,沒有必要將它再賦給一個指針P,而且你定義的那個指針v我也不知道它是干嘛用的,類型還是void類型,很奇怪啊,void一般是定義函數類型,而不是定義變量類型的

TA貢獻1735條經驗 獲得超5個贊
按照函數定義去調用就可以了。
實例:#include <iostream>
using namespace std;
void printstar(void)
{
cout<<"**********star****************"<<endl;
}
void print_message(void)
{
cout<<"Hello World!"<<endl;
}
int main(void)
{
printstar();//調用
print_message();//調用
printstar();//調用
return 0;
}
- 5 回答
- 0 關注
- 576 瀏覽
添加回答
舉報