[英]Define namespace scope function
我想在命名空間范圍內定義公共功能(而不是在類中-這可以工作)基本上,我想像例如使用它:
std::chrono::milliseconds(16)
我已經嘗試了許多設置,但這是最近的設置:
#ifndef TIMEX_H
#define TIMEX_H
namespace timee{
int now(int z);
}
#endif
#include <chrono>
#include "TimeX.h"
using namespace timee;
int now(int z){return 4;}
#include <iostream>
#include "TimeX.h"
using namespace timee;
int main(int argc, char** argv){
long c = now(2);
std::cout << "c" << c <<std::endl;
return 0;
}
這給了我以下錯誤:
Main.obj:錯誤LNK2019:函數_SDL_main中引用的未解析的外部符號“ int __cdecl timee :: now(int)”(?now @ timee @@ YAHH @ Z)
這是什么問題? 令人困惑。 為什么鏈接器告訴我_SDL_main
引用了此鏈接? 我使用SDL庫,但它與我的功能有什么關系?
還有一個額外的問題(如果不容易回答,我將開始新的話題)。 我使用timee
命名空間的名字,因為我有一個錯誤,告訴time
名稱用於冥冥中早已錯誤C2757 。 我想它可能嵌套在某個地方。 我如何找出使用該名稱的地方,以及無論如何都可以使用該名稱? 我無法想象編譯器在確定我要使用的內容時會遇到問題。
您必須定義類似的功能
int timee::now(int z){return 4;}
或者你可以這樣寫
#include <chrono>
#include "TimeX.h"
namespace timee
{
int now(int z){return 4;}
}
否則,在cpp模塊中,將在全局名稱空間中聲明(並定義)另一個具有相同名稱的函數
#include <chrono>
#include "TimeX.h"
using namespace timee;
int now(int z){return 4;}
那就是這兩個定義
int timee::now(int z){return 4;}
int now(int z){return 4;}
定義不同的功能。 第一個聲明(和定義)命名空間中的功能timee
而第二個聲明(和定義),在全局命名空間同名的另一個功能。
至於名稱time
則在全局名稱空間中定義它,並對應於C標准函數time
。 例如,標頭<chrono>
可以依次包含標有名稱time
的標頭<time.h>
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.