小编pan*_*an-的帖子

数组衰减到指针和重载决策

我希望能够在重载分辨率中区分数组和指针:

class string {
public:
        string(const char* c_str);

        template<int N>
        string(const char (&str) [N]);
};


int main() {
        const char* c_str = "foo";
        string foo(c_str);      // ok will call string(const char*)

        string bar("bar");      // call string(const char*) instead of the array version
}
Run Code Online (Sandbox Code Playgroud)

到目前为止我发现的最好的是使用指针的引用而不是指针:

class string {
public:
        string(const char*& c_str);

        template<int N>
        string(const char (&str) [N]);
};


int main() {
        const char* c_str = "foo";
        string foo(c_str);      // ok will call string(const char*)
        string bar("bar");      // ok, will call …
Run Code Online (Sandbox Code Playgroud)

c++ arrays pointers

10
推荐指数
2
解决办法
819
查看次数

标签 统计

arrays ×1

c++ ×1

pointers ×1