C++ 求救求救!!!

来源:百度知道 编辑:UC知道 时间:2024/06/22 17:46:05
class k
{
public:
int& operator[](const size_t ss)
{
return xcc[ss];
}
const int& operator[](const size_t xx)
{
return xcc[xx];
}
private:
vector<string> xcc;
};
错误信息:
1>------ 已启动生成: 项目: aaaa, 配置: Debug Win32 ------
1>正在编译...
1>aaaa.cpp
1>f:\c++实验文件\vs2005\aaaa\aaaa\aaaa.cpp(29) : error C2556: 'const int &k::operator [](const size_t)' : overloaded function differs only by return type from 'int &k::operator [](const size_t)'
1> f:\c++实验文件\vs2005\aaaa\aaaa\aaaa.cpp(24) : see declaration of 'k::operator []'
1>f:\c++实验文件\vs2005\aaaa\aaaa\aaaa.cpp(29) : error C2373: 'k::operator []' : redefinition; different type modifiers
1> f:\c++实验文件\vs2005\aaaa\aaaa\aaaa.cpp(24) : see declaration of 'k::operator []'
1>f:&#

首先有两个[]运算符重载函数——错误
接下来 运算符重载函数的返回值错了,应该是vector的模板string而不是int
#include "stdafx.h"
#include <iostream>
#include <string>
#include <vector>

using namespace std;

class k
{
public:
string& operator[](const size_t ss)
{
return xcc[ss];
}
/*const int& operator[](const size_t xx)
{
return xcc[xx];
} */
private:
vector<string> xcc;
};

你是不是重定义了.
int& operator[](const size_t ss)
{
return xcc[ss];
}



const int& operator[](const size_t xx)
{
return xcc[xx];
}
相比,只有返回值不同,这不是重载,会被编译器报错的.
另外你的文件中包含了vector模板定义的头文件以及string模板定义的头文件了吗?没有的话,要加上.
你应该把整个工程的文件都贴出来,标示清楚.
你贴出的让人不好分析!

class类负载运算符,很麻烦
在public声明:
k& operator[](const size_t ss)//一定是类名,否则就视为重复定义
const k& operator[](const size_t ss)
在类的外面,
k k::operator[](con