以下是我的情況:如何訪問與全局函數具有相同功能簽名的類中的全局函數?
file.h此文件包含兩個函數的extern
extern int add(int a, int b);
extern int sub(int a, int b);
file.cpp的上述功能實現。
int add(int a, int b)
{
return 20;
}
int sun(int a, int b)
{
return 20;
}
test.h這是類測試,其中在file.h
class test
{
public:
test();
~test();
private:
int add(int a, int b);
int sub(int a, int b);
}
TEST.CPP在測試類的實施以相同的簽名爲extern添加和子兩個成員函數調用測試類構造函數add函數以及包含這兩個文件。
#include "test.h"
#include "file.h" // Contains extern methods
#include <iostream>
test::test()
{
int addition = add(10, 10);
printf("Addition: %d ", addition);
}
int
test::add(int a, int b)
{
return 10;
}
int
test::sub(int a, int b)
{
return 10;
}
的main.cpp
#include "test.h"
int main()
{
test *a = new test();
}
現在我的問題是,在主類什麼都會被打印出來。是否將打印
它給出輸出爲 此外:10 爲什麼它給10
? class test
使用自己的功能add()
和sub()
。因爲這兩個函數都出現在file.h
和同一類中。我的猜測是它會給ambiguity
的功能。請問有沒有任何標準,請解釋一下。和我怎樣才能使用012.h在class test
file.h函數。
顯然編譯錯誤,因爲你想爲指針類型分配給非指針類型在這裏:'測試=新的測試();' – greatwolf 2015-02-10 12:26:35
什麼都不會打印。即使它編譯了,你也不會執行任何打印任何東西的東西。只需糾正,編譯並執行它。 – rubikonx9 2015-02-10 12:27:15
編譯程序並運行它的機率非常好,將提供一個答案。 – molbdnilo 2015-02-10 12:30:52