【问题标题】:array subscript overloading in c++C ++中的数组下标重载
【发布时间】:2013-11-13 16:25:35
【问题描述】:

我是一个新手程序员。我有错误问题:数组下标的类型无效[int]'。我不明白为什么。

#include <iostream>
#include "D:\programyCodeBlocks\arytmetyka\include\CLiczba.h"
using namespace std;

int main()
{
    CLiczba a;
    CLiczba b;
    CLiczba wynik;
    a.vset("5");
    b.vset("5");
    cout << "calk: " << a.czescCalk[0] << endl;
    cout << "ulam: " << a.czescUlam[2] << endl;
    cout << "znak: " << a.znak << endl;
    wynik = a.cdodaj(b);

    return 0;
}

cout中出现问题

#ifndef CLICZBA_H
#define CLICZBA_H
#include <string>
#include <vector>
using namespace std;

class CLiczba
{
    public:
    CLiczba();
    CLiczba(string liczba);
    virtual ~CLiczba();
    void vset(string liczba);
    CLiczba cdodaj(CLiczba liczba);
    CLiczba codejmij(CLiczba liczba);

    vector<int> czescCalk();
    vector<int> czescUlam();

    bool znak;
    int dlCalk;
    int dlUlam;
    protected:
    private:

 };

 #endif // CLICZBA_H

#include "D:\programyCodeBlocks\arytmetyka\include\CLiczba.h"
using namespace std;
#include <iostream>
//#include <string>

CLiczba::CLiczba()
{
    //dlCalk = 0;
    //dlUlam = 0;
    znak = true;
} // End CLiczba::CLiczba()

CLiczba::CLiczba(string liczba)
{
    //dlCalk = 0;
    //dlUlam = 0;
    znak = true;
    vset(liczba);
} //End CLiczba::CLiczba(string liczba)

void CLiczba::vset(string liczba)
{
    int pom = 0;
    if (liczba.at(0) == '-')
    {   
        znak = false;
        pom = 1;
    } //End  if (liczba.at(0) == '-'

    int pozPrzecinek = liczba.find(',');
    while(pom < pozPrzecinek)
    {
        czescCalk.push_back(liczba.at(pom) -48);
        //dlCalk++;
        pom++;
    } //End while(pom < pozPrzecinek)

    pom++;
    while(pom < liczba.length())
    {
        czescUlam.push_back(liczba.at(pom) -48);
        //dlUlam++;
        pom++;
    } //End while(pom < liczba.length())

} //End void CLiczba::vset(string liczba)

【问题讨论】:

  • 能否请您翻译源代码的相关部分?
  • 您确定要将czescCalk 用作方法吗?还是应该只是vector&lt;int&gt; 成员?
  • 哦,对不起,我忘了。 Liczba - 数字 wynik - 结果 czescCalk - 总部分 czescUlam - 小数部分 znak - 符号
  • @user2948135 Stefano 的意思是用英语编写代码。所有的。不只是给我们一些翻译。它将帮助我们了解代码应该做什么,并且对您的职业生涯大有裨益(应该寻求追求)。但是从您的代码中,我假设您希望 czescCalk 成为一个向量,在这种情况下,它应该是 vector&lt;int&gt; czescCalk; 而不是 vector&lt;int&gt; czescCalk();,就像现在一样。
  • 谢谢巴特。我认为 vector czescCalk();是一个空的构造函数。现在可以了。

标签: c++ function types


【解决方案1】:

根据您的代码,我假设您希望 czescCalk 成为 vector&lt;int&gt;,而不是返回 vector&lt;int&gt; 的方法。在这种情况下你不应该写

vector<int> czescCalk();
vector<int> czescUlam();

但是

vector<int> czescCalk;
vector<int> czescUlam;

【讨论】:

    猜你喜欢
    • 2015-09-14
    • 1970-01-01
    • 2015-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多