You are not logged in. This forum allows only logged in users to post. If you want to post in the forum, please log in.
Download
Magazine
Develop
Account
Download
Magazine
Develop
Login
Forgot Account/Password
Create Account
Language
Help
Language
Help
×
Login
Login Name
Password
×
Forgot Account/Password
Category:
Software
People
PersonalForge
Magazine
Wiki
Search
OSDN
>
Find Software
>
System
>
Networking
>
CLX C++ Libraries
>
Forums
>
開発者
>
スコープ解決演算子について
CLX C++ Libraries
Description
Project Summary
Developer Dashboard
Web Page
Developers
Image Gallery
List of RSS Feeds
Activity
Statistics
History
Downloads
List of Releases
Stats
Source Code
Code Repository list
Subversion
View Repository
Ticket
Ticket List
Milestone List
Type List
Component List
List of frequently used tickets/RSS
Submit New Ticket
Communication
List of Forums
ヘルプ (2)
公開討議 (19)
開発者 (24)
News
Forums:
開発者
(Thread #21892)
Return to Thread list
RSS
スコープ解決演算子について (2009-03-03 12:22 by
cielquis
#42273)
Create ticket
「clxで、変数をホストのバイトオーダーからネットワークのバイトオーダーに
変換するhtons()というスタンダードライブラリにある関数を使用しているのですが、C++の名前空間の外側、つまり、大域的という事で、
::htons()
と、スコープ解決演算子::を使用しているのですが、darwinでは、これはマクロの為、エラーになっていました。Xcodeのビルドのプリプロセスで確認いたしました。」
http://qwik.jp/objc20-reading/30.html
上記への対応.
当初,大域空間で定義されている関数を呼び出すときは,::f() のような形で記述していたが,上記のような問題が発生するようなので f() と記述する事とする.比較的最近に実装したものは,上記のようなスコープ解決演算子は付けなくなっていたので,これを機に統一する事とする.
RE: スコープ解決演算子について (2009-03-15 00:02 by
cielquis
#42550)
Create ticket
何故グローバルな名前空間で定義されている関数を呼び出すときに,スコープ解決演算子を使用していたのかを思い出した.クラス内に同名のメソッドがある場合,引数が違ってもグローバル空間に定義されている関数を探しに行ってくれないからだった.
udp::socket, tcp::socket, tcp::acceptor, icmp::scoket, ssl::socket, ssl::acceptor 辺りでこの問題が出てくる.対象となる関数は,connect(), accept(), bind(), send(), recv() 辺り.
なので,以下の関数をコールするときはスコープ解決演算子を付ける事とする.
::connect(), ::bind(), ::listen(), ::accept(), ::send(), ::recv()
これ以外の関数のグローバル名前空間へのスコープ解決演算子は取り払う.尚,sendto() と recvfrom() は,send_to(), recv_from() のような規則でメソッド名を付けているのでこちらはスコープ解決演算子は付けない.
Reply to
#42273