2

我正在制作一个应该能够以与字符串类相同的方式分配 c 字符串的类:

string a = "My string";

我遇到的问题是它看起来不是operator=( char operand )用于此目的的。所以我的问题是:用什么代替?

是)我有的:

class exstring
{
    ...

    public:
    exstring& operator=( char* );

    ...
};

...

int main()
{
    exstring test = "test";
}

这使:

main.cpp:9:22: error: conversion from ‘const char [19]’ to non-scalar type ‘std::exstring’ requested

有任何想法吗?

4

1 回答 1

11

你不是在operator =这里打电话给你的。您需要了解赋值和初始化之间的区别。你正在做的是初始化,你需要一个构造函数来接受你提供的参数。换句话说:

extring test = "test";

与以下内容完全相同:

extring test("test");

除了在后一种情况下构造函数可以是显式的,但在前一种情况下不是。

于 2012-05-07T16:32:24.160 回答