içine aşağıdaki kod parçacığı vardır:birkaç ad alanlarında aşırı bir işlevi çağırmak bir ad
void foo(double a) {}
namespace bar_space
{
struct Bar {};
void foo(Bar a) {}
}
foo (çift) bir kütüphaneden bir genel fonksiyonudur. Kendi adresim Bar_space ile kendi ad alanım var Bar. Bar için foo() 'nın aşırı yüklenmesini uygulamak istiyorum; böylece Bar, yerleşik türlere daha benzer.
namespace bar_space
{
void baz()
{
foo(5.0); // error: conversion from ‘double’ to non-scalar type ‘ssc::bar_space::Bar’ requested
}
}
Bu hem benim Fedora ve Mac üzerinde gcc üzerinde derlenmeyecektir: Ben isim alanı içinden (çift) orijinal foo çağırmak istediğinizde
Sorun görünür. kullanılarak
foo(5.0)
ad dışından
veya arama
namespace bar_space
{
::foo(5.0)
}
Tamam çalışır, ancak ben (diğer geliştiricileri de içeride çalışıyoruz için umduğu gibi bu doesnt benim yeni fonksiyon oldukça kadar güzel yapmak bar_space).
Bar_space özgün işlevi gizliyor mu? Açık scoping olmadan bar_space içinden foo (5.0) yapılabilmesi için bir yol var mı (: :)? Herhangi bir yardım takdir edilir.
gibi bir şey kullanabilirsiniz, ancak 'bar_space :: foo kullanarak gibi bir şey kullanabilirsiniz;'? – dreamlax
Bu bar_space dışında foo (Bar) kullanılmasına yardımcı olacak, ancak bar_space içine foo (double) almıyor. –
benzer bir şey mümkündür: http://codepad.org/0IcNXZb6 – DaVinci